模型更改后事件未绑定到指令 - AngularJS

时间:2017-08-25 13:50:47

标签: javascript angularjs

在我的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指令多次呈现此指令。

每当我加载视图并触发事件时,都会相应地调用所有侦听器,但是当我在数组中添加一个新项目时,会导致另一个指令被渲染,从不调用它的侦听器。有没有办法强迫它绑定?

2 个答案:

答案 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'
    }
}]);