Angularjs - 取消订阅范围内的事件侦听器后控制器之间的通信

时间:2015-09-19 04:20:04

标签: 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.........." + 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控制器范围销毁方法取消订阅事件监听,它的工作正常。 处理这种情况应该是什么样的正确方法,以便我可以订阅pag​​e2controller消息,并且仍然在page1控制器范围内使用destroy方法取消订阅,只要page1被卸载

1]:http://plnkr.co/edit/dgitQBPRDjn9Z98kQ8Ad?p=preview

0 个答案:

没有答案