我在$ rootScope上使用回调函数广播来获取第二个控制器上的触发方法。
function onSuccess(state) {
if (state != true) {
} else {
$rootScope.$broadcast('proximityCatched', null);
}
//console.log('Proximity state: ' + (state ? 'near' : 'far'));
};
在控制器上我有听众:
$rootScope.$on('proximityCatched', function () {
alert("TEST");
});
问题在于警报(“TEST”);被触发两次。
我尝试使用stopPropagation或在正常范围内使用广播找到任何有效的解决方案,但没有运气。
我怎么能以正确的方式做到这一点?
感谢您的任何建议。
编辑:路由器配置:
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('game', {
url: "/game",
templateUrl: "templates/game.html",
controller: "GameCtrl"
})
.state('home', {
url: "/home",
templateUrl: "templates/home.html",
controller: "HomeCtrl"
})
// if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise('/home');
});
答案 0 :(得分:1)
如果您连接控制器两次,它将调用两次。
检查您是否在routes
配置和html(使用ng-controller
)中附加控制器,如果您连接两次(使用两种方式),请删除一个。
cheerz