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;
});