在编译后多次执行事件

时间:2016-02-01 09:23:45

标签: angularjs angularjs-directive angularjs-scope

我有这个指令:

    myApp.directive('someDir', function($compile){
    return{
        restrict: 'A',
        link: function(scope, element, attrs){
            scope.$on("compileTask", function() {
                $compile(element)(scope);
            });
        }
    }
});

在我的控制器中,我正在将事件广播为:

myApp.controller('GreetingController', ['$scope', function($scope) {
  $scope.$broadcast('compileTask');
}]);

观点是:

<h2 some-dir ng-bind-html="employee.name"></h2>
<h4 some-dir ng-bind-html="employee.designation"></h4>

问题在于,当'compileTask'事件被广播时,它被广播多次。我想知道它为什么多次广播这个事件?什么是允许单次广播的方式

1 个答案:

答案 0 :(得分:1)

该事件被'广播'给所有事件听众。由于你有两个指令监听事件,他们都会处理它。