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);
}
但低於$onChanges
生命週期鉤在ListItemController
不執行。
// ListItemController $onChanges life cycle hook
function $onChanges(changes) {
if (!changes.item.isFirstChange()) {
$log.debug(changes); // Not executed
}
}
我想這angular.merge
通過控制器實例初始化item
之前ListItemController
是一個重要原因。
var itemScope = $scope.$new(true, $scope);
itemScope = angular.merge(itemScope, {
$ctrl: {
item: item
}
});
$ onChanges只聽你把綁定的屬性,因爲'item'不綁定,它的任何變化都不會觸發$ onChanges功能,你應該使用$來代替手錶。 –
@AnonyC然後,如何在'ListController'中編譯時在'listItem'組件綁定中正確傳遞'item'對象? – taehwanno