【发布时间】:2016-04-01 12:46:54
【问题描述】:
我有一个非常简单的设置两个选项卡,主页和管理:
$routeProvider
// route for the home page
.when('/home', {
templateUrl : 'views/home.html',
controller : 'myCtrl',
controllerAs: 'vm',
resolve:{
loadDropDowns:function(DataSvc,$rootScope){
return DataSvc.GetDropDowns();
}
}
})
// route for admin page
.when('/admin',{
templateUrl : 'admin/templates/admin.html'
})
在控制器中,我有一个 $viewContentLoaded 事件的侦听器
像这样:
$rootScope.$on('$viewContentLoaded', function(event){
console.log(" viewContentLoaded fired ");
});
每次我点击主页选项卡时,事件处理程序都会触发两次,所以第一次是 2 ,然后是 4 ,然后是 8 等等......
我在加载下拉菜单时广播了另一个事件,对于一个广播事件,我也得到了处理程序的多次触发。
$rootScope.$broadcast('dropDownsSet');
并且在同一个控制器中:
$rootScope.$on('dropDownsSet', function(event, mass) {}
也被执行多次..(与上面相同,每次事件处理程序触发的次数加倍)
我不知所措,这种疯狂的原因可能是什么?
【问题讨论】:
标签: angularjs dom-events ngroute