Javascript Angularjs-从作用域上的事件侦听器取消订阅后控制器之间的通信

Javascript Angularjs-从作用域上的事件侦听器取消订阅后控制器之间的通信,javascript,angularjs,Javascript,Angularjs,我使用$.emit和$on在不同的视图中从page2控制器通信到page1控制器 app.controller('mainController', ['$scope', function($scope) { $scope.message = "hello main page"; $scope.$on('frompage2', function(event, data) { console.log("in parentController.....

我使用$.emit和$on在不同的视图中从page2控制器通信到page1控制器

     app.controller('mainController', ['$scope', function($scope) {
      $scope.message = "hello main page";
      $scope.$on('frompage2', function(event, data) {
        console.log("in parentController.........." + data);
      })
    }]);

    app.controller('page1Controller', ['$scope', '$rootScope', function($scope, $rootScope) {
      $scope.message = "hello page1";
      var msgFromPage2 = $rootScope.$on('frompage2', function(event, data) {
        console.log("in page1 controller" + data);

      })

      $scope.$on('$destroy', function() {
        msgFromPage2()
      });

    }]);

    app.controller('page2Controller', ['$scope',
      function($scope) {

        $scope.message = "Hello page 2"
        $scope.$emit('frompage2', 'this is from page2');

      }
    ]);
如果我不使用page1控制器作用域销毁方法来取消事件侦听的订阅,它的工作就可以了。 处理这种情况的正确方法应该是什么,这样我就可以订阅page2controller消息,并在page1控制器作用域中使用destroy方法在page1卸载时取消订阅


1] :

您无法在这些特定的控制器之间进行通信,因为它们位于不同的视图上,并且当其中一个控制器初始化时,第二个控制器不初始化。无论何时切换视图,负责该视图的控制器都将重新初始化,另一个将被销毁


为了使他们能够共享一些数据,您可以使用服务。这是一个很好的例子。谢谢!!。我只是想知道我是否可以使用angularjs broadcat/emit和on方法来完成该工作流。。我仍然可以使用$rootscope.on在page1中侦听page2消息,但问题是,如果我从第1页取消订阅,则不会发生范围破坏方法通信,这是正确的行为。如果我使用angularjs广播/发射机制,有什么更好的方法