我有控制器 A 向共享服务发送一些数据,控制器 B 应该读取该数据。问题是控制器 B 与控制器 A 位于不同的页面(在同一网站上),即我这样做。在控制器 A 上,单击按钮(将数据发送到服务)并打开另一个页面,其中控制器 B 应该从服务中读取数据。但是什么也没发生,所以我的问题是不同页面上的控制器可以通过这种方式进行通信吗?
这是我尝试这样做但没有运气的方法:
服务:
publicApp.angularModule.service('controllerCommunicationService', function ($rootScope) {
var communicationService = {};
communicationService.data = null;
communicationService.setDataForBroadcast = function(data) {
this.data = data;
this.broadcastData();
};
communicationService.broadcastData = function() {
$rootScope.$broadcast('handleBroadcast');
};
return communicationService;
});
控制器A的相关部分:
publicApp.angularModule.controller('PublicRoutinesCtrl', function ($scope, $rootScope, routinesService, controllerCommunicationService, bootstrapCarouselService) {
$scope.goToNextScreen = function() {
var currentIndex = bootstrapCarouselService.getcurrentSlideIndex();
controllerCommunicationService.setDataForBroadcast($scope.items[currentIndex].Routine.RoutineId);
};
控制器B的相关部分:
$rootScope.$on('handleBroadcast', function () {
console.log("TEST");
$http.post("/EditWorkout/PostRoutineId", { routineId: controllerCommunicationService.data })
.success(function() {
console.log("success");
})
.error(function (responseData) {
console.log("Error !" + responseData);
});
});
甚至console.log("TEST");
没有被解雇。