我需要从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
答案 0 :(得分:1)
在你的jsfiddle中,liveTrackingController没有在任何地方使用。
在html中添加这样的内容以获得所需的日志输出。
<div ng-controller="liveTrackingController"></div>