2016-04-23 7 views
0

私は大規模なドロップダウンを移入するために、データをフェッチコントローラを持っている:Angular 1.5.3コンポーネントのバインド変更を監視しますか?

MySrvc.getData() 
    .then(function (response) { 
     $scope.someData = response.data; 
    }); 

私ものようなインスタンス化と定義されているコンポーネントを持っている...

<my-component foo='someData'></my-component> 

angular.module('mod').component('myComponent', { 
    bindings: { 
     foo: '<' 
    }, 
    controller: function() { 

    } 
}); 

ngOptionsは、あなたが持っている必要があることを指示しますngModelも同様に設定します。配列の最初の要素を選択したオブジェクトにしたいと思います。 this.selectedElement = this.foo[0]。問題は、バインドが更新されたことがわかるまで、このコード行を実際に書くことはできません。

コンポーネントにscope.$watchを使用することはできません。this.$onChangesは動作していないようです。何か案は?

+1

'$ onChanges'を使うには、少なくとも1.5.3の角が必要です。しかし、それは 'これでうまくいくはずです。$ onChanges = function(){...}' –

+0

@SimonSchüpbachああ、私たちのミニバージョンは非ミニバージョンです。 これを修正して更新するつもりです。 – sean

+0

@SimonSchüpbachそれはそれでした。完璧に動作します。私は答えとして提出してください。私は提出します。 – sean

答えて

1

あなたは、少なくとも1.5.3角度$onChangesを使用している必要があります。しかし、あなたはそのように使うことができます

1

あなたはあなたの要素でng-ifを追加した場合、データはあなたがthis.foo上ウォッチャーを使用する場合は、$scope.$watchを使用することができます

1

を来た後ディレクティブはレンダリングng-if

<my-component ng-if="someData" foo='someData'></my-component> 

でこの問題を解決することができます関数。関数を最初の引数として受け入れることができるので、特定の変数を見ることができます。

試み:

$scope.$watch(function() { 
    return this.foo; 
},true); 
関連する問題