javascript - 不同选项卡中 Controller 之间的 Angularjs 通信

标签 javascript angularjs

<分区>

我有 Controller A,它发送一些数据到共享服务和 Controller B,它应该读取该数据。问题是 Controller B 与 Controller A 位于不同的页面(在同一网站上),即我做了 smth。在 Controller A 上,单击按钮(将数据发送到服务)并打开另一个页面,其中 Controller B 应从服务中读取数据。但是没有任何反应,所以我的问题是不同页面上的 Controller 可以通过这种方式通信吗?

这是我尝试过但没有成功的方法:

服务:

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

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



    };

controller 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"); 也不会被触发。

最佳答案

根据你的问题

my question is can controllers on different pages communicate this way ?

答案是否定的。与此相关的 Angular 和 javascript 并不是这样设计的。

但是,如果您指的是同一页面上的不同 View ,那么是的,您可以使用服务。服务是单例的,当保存在同一页面上时,它们的数据会跨 Controller 保存。

如果你真的想将数据从一个页面发送到另一个页面,你的选择是通过查询字符串(在 url 上)或发布数据,或者如果你只支持现代浏览器,那么你可以使用客户端本地存储 ( http://www.w3schools.com/html/html5_webstorage.asp )

关于javascript - 不同选项卡中 Controller 之间的 Angularjs 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19270932/

相关文章:

javascript - Angular : Allow selection from only one group in drop-down list bootstrap-select

javascript - UI 路由器 $state.go 没有重定向?

javascript - AngularJS 范围不一致

javascript - Node.js 中的 HTTP POST 不起作用

javascript - 将按钮与键盘关联

javascript - 无法更改 Material UI Select 组件的填充

javascript - 在javascript中将guid字节转换为字符串

javascript - Angular $watch 数组并从服务器更新

javascript - 如何在黑白图像上创建彩色图像鼠标悬停(在 JQuery 中)

angularjs - 使用 ionic/angular 应用程序发布 facebook 帖子