在我的angularjs应用程序中,我有一个元素指令,我绑定一个侦听控制器广播事件的事件侦听器。
app.directive('listItem', function(){
return {
link: function(scope, element){
scope.$on('controllerEvent', function(e,attr) {
console.log('event fired!')
});
},
templateUrl:'views/fragments/list.html'
}
}]);
在我的视图中使用带有数组的ng-repeat指令多次呈现此指令。
每当我加载视图并触发事件时,都会相应地调用所有侦听器,但是当我在数组中添加一个新项目时,会导致另一个指令被渲染,从不调用它的侦听器。有没有办法强迫它绑定?
答案 0 :(得分:0)
你必须为事件监听者拍摄
$ scope。$ emit('controllerEvent',{});
每当它被改变时
答案 1 :(得分:0)
经过大量的摆弄,我找到了解决方法。
由于我将它绑定到指令的本地范围,因此在添加更多数据时可能会失去对它的引用。 为了解决这个问题,我只是将绑定更改为$ rootScope(必须在指令中注入它);
app.directive('listItem', ['$rootScope', function($rootScope){
return {
link: function(scope, element){
$rootScope.$on('controllerEvent', function(e,attr) {
console.log('event fired!')
});
},
templateUrl:'views/fragments/list.html'
}
}]);