角度广播事件导致侦听器执行两次

时间:2014-07-16 12:30:15

标签: javascript angularjs angularjs-scope angular-broadcast

我在服务中有一个广播事件的方法,一个控制器订阅了它。

当广播发生时,订户处理程序执行两次。 以下是设置:

//Broadcaster

function (Id1, Id2, Id3) {
    var requestObj = {"ID1": Id1, "ID3": Id3};
    $http.post(url, {
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
        }
    })
    .success(function (response) {
        $rootScope.$broadcast('myevent');
    }).error(function (response) {
    });
}
================================================================

//subscriber

$scope.$on('myevent', function () {
    console.log($dialog); // Executes two times
});

我无法纠正原因。是否有其他可以产生影响的东西。 感谢。

1 个答案:

答案 0 :(得分:3)

事实证明,有多个控制器声明导致重复$ on触发。

发生这种情况的一个常见原因是由于$routeProvider配置中的控制器以及使用ng-controller的视图html中声明的