使用服务在AngularJS中广播消息

时间:2015-09-07 10:21:33

标签: angularjs

我需要从Angular JS中的另一个控制器调用一个函数。 Stack Overflow上的另一个问题建议使用服务: https://stackoverflow.com/a/11847277/1910735

JSFiddle:http://jsfiddle.net/0z7ux66c/

所以我创建了一个服务和两个控制器:

    var app = angular.module("myApp", []);

    app.factory('trackingService', function ($rootScope) {

        var trackingInstance = {};

        trackingInstance.assetInformationModel = null;

        trackingInstance.RefreshDashboard = function () {
            $rootScope.$broadcast('Refresh');
        };

        return trackingInstance;
    });

    app.controller('assetInformationController', function ($scope,  trackingService) {
        $scope.UpdateDashboard = function () {
            console.log('UpdateDashboard()')
            trackingService.RefreshDashboard();
        };

        $scope.$on('Refresh', function () {

// THIS gets called
            console.log('Refresh');
        });


    });

    app.controller('liveTrackingController', function ($scope,  trackingService){
        $scope.$on('Refresh', function () {

// THIS doesn't
            console.log('Refresh in liveTrackingController');
        });


    });

从代码中,它应该在Console中显示以下三行:

UpdateDashboard()
Refresh
Refresh in liveTrackingController

但它没有从Reresh调用liveTrackingController事件 - 它只显示:

UpdateDashboard()
Refresh

1 个答案:

答案 0 :(得分:1)

在你的jsfiddle中,liveTrackingController没有在任何地方使用。

在html中添加这样的内容以获得所需的日志输出。

<div ng-controller="liveTrackingController"></div>