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

Javascript 导致侦听器执行两次的角度广播事件,javascript,angularjs,angularjs-scope,angular-broadcast,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-urlenco

我在一个服务中有一个方法,它广播一个事件,并且一个控制器已经订阅了它

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

//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
});
我无法纠正原因。还有其他什么能起作用的吗。
谢谢。

因为原来有多个控制器声明导致触发重复的$on


发生这种情况的一个常见原因是在
$routeProvider
配置中声明的控制器,以及在使用
ng controller

的视图html中声明的控制器。这很可能是由于为您的视图加载了重复的控制器。重复控制器的一个常见原因是在
$routeProvider
配置中的路由中声明的控制器,以及在使用
ng controller
的查看html中声明的控制器@Chandermani:谢谢。这就是问题所在,我用哪一个重要吗?因为在
subscriber
中,我打开了一个
对话框
,两次执行都是从不同的模板打开对话框。我认为这无关紧要。我想加上它作为答案,这样问题就可以标记了answered@Chandermani:是的,请加上。就是这样。容易解决。