Javascript AngularJS中的共享服务
我有一个触发自定义模式的按钮(我在这里使用了模式) 该按钮位于Javascript AngularJS中的共享服务,javascript,angularjs,Javascript,Angularjs,我有一个触发自定义模式的按钮(我在这里使用了模式) 该按钮位于MainControllercontroller中 主控制器 第二控制器 共享服务 我的问题是:在SecondController中,为什么它不收听广播?为什么这段代码(在上面的SecondController中注释)永远不会执行?在第二个控制器中使用$rootScope.on而不是$scope.on 服务正在更改根作用域,而不是第二个控制器作用域 我刚刚对您的示例做了一个简单的设置,所有内容似乎都正常工作,所以您的代码中一定有其他内
MainController
controller中
主控制器
第二控制器
共享服务
我的问题是:在
SecondController
中,为什么它不收听广播?为什么这段代码(在上面的SecondController
中注释)永远不会执行?在第二个控制器中使用$rootScope.on而不是$scope.on
服务正在更改根作用域,而不是第二个控制器作用域 我刚刚对您的示例做了一个简单的设置,所有内容似乎都正常工作,所以您的代码中一定有其他内容 使用代码的工作示例: 有没有可能因为你的页面实际上没有运行两个控制器而看不到你所期望的
app.controller('MainController', function($scope, sharedService) {
$dialogs.create('dialog.html', 'SecondController',
{}, {key: false, back: 'static'});
// Start broadcast
sharedService.prepForBroadcast('Hello AngularJS');
});
app.controller('SecondController', function($scope, sharedService) {
// This piece of code doesn't get called.
$scope.$on('handleBroadcast', function() {
console.log('received broadcast');
});
});
app.factory('sharedService', function($rootScope) {
var data = {message: ''};
data.prepForBroadcast = function(message) {
this.message = message;
$rootScope.$broadcast('handleBroadcast');
};
return data;
});