2015-09-07 60 views
0

廣播消息,我需要從角JS另一個控制器調用一個函數。 Stack Overflow上的另一個問題是建議使用,而不是一種服務: https://stackoverflow.com/a/11847277/1910735使用服務於AngularJS

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


    }); 

從代碼,它應該顯示下面三行在控制檯:

UpdateDashboard() 
Refresh 
Refresh in liveTrackingController 

但它不調用從liveTrackingController 10事件 - 它只是顯示:

UpdateDashboard() 
Refresh 

回答

1

在你的jsfiddle,該liveTrackingController不被任何地方使用。

添加像這樣到您的HTML以獲得所需的日誌輸出。

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