0
これを特定のDOM要素(サードパーティのライブラリによって動的に作成されたDOM)に挿入するコンポーネントを動的にコンパイルしたいと思います。 したがって、私は$compile
,$scope
を使用します。
https://jsbin.com/gutekat/edit?html,js,console,output
// ListController $postLink life cycle hook
function $postLink() {
...
$timeout(function() {
ctrl.items.splice(0, 1);
$log.debug('First item of array is removed');
$log.debug(ctrl.items);
}, 2000);
}
が、ListItemController
で$onChanges
ライフサイクルフック以下は実行されません。
// ListItemController $onChanges life cycle hook
function $onChanges(changes) {
if (!changes.item.isFirstChange()) {
$log.debug(changes); // Not executed
}
}
私はitem
ListItemController
前にコントローラのインスタンスの初期化を渡すangular.merge
が主な原因であると推測します。
var itemScope = $scope.$new(true, $scope);
itemScope = angular.merge(itemScope, {
$ctrl: {
item: item
}
});
$ onChanges item'はそれに対する変更は、$ onChanges機能を起動しません、あなたは$の代わりに時計を使用する必要があり、結合していない 'だけなので、あなたがバインディングに入れプロパティに耳を傾けます。 –
@AnthonyC次に、 'ListController'のコンパイル時に、' item'オブジェクトを 'listItem'コンポーネントバインディングに正しく渡す方法はありますか? – taehwanno