在我的角度应用程序中,有2个控制器。
file1.js
angular.module(appName).controller('controller1', function($scope,$state){
$scope.goTofile2 = function(){
$state.go('file2');
}
$scope.$on('broadcastFromFile2', function () {
// something to do
});
});
file2.js
angular.module(appName).controller('controller1', function($rootScope,$state){
$scope.triggerBroadcast = function(){
$rootScope.$broadcast('broadcastFromFile2');
}
});
方案
从文件1开始,应用程序将在触发$scope.goTofile2()
时导航到文件2。一旦到达文件2,点击按钮$scope.triggerBroadcast()
将被触发,它将依次触发广播broadcastFromFile2
,而某些代码则写在$scope.$on('broadcastFromFile2', function () { })
中,该文件位于file1
问题
单击文件2中的按钮后,$broadcast
将被触发,但相应的$ on无效。可能的原因是什么?是因为这些不是父母 - >儿童控制员?
答案 0 :(得分:0)
IComparable
逻辑没有被触发,因为' controller1' (file1)导航到' controller2' (文件2)。如果您想实现此$on
和$broadcast
逻辑,请将其置于服务中。
服务是单身,他们将在您的控制器上维护一个实例。
所以在$on
中你可以有一个如下声明:
controller1
并且在myService.setEventListener()
中你可以有如下声明:
controller2
像这样创建一个新服务:
myService.broadcastEvent()