离子/角度:听一次EventListener

时间:2015-12-04 14:06:50

标签: angularjs cordova ionic phonegap-plugins

我已为Ionic实施了Admob Pro plugin,并希望收听onAdDismiss - EventListener。我现在遇到的问题是每次用控制器打开视图时都会将此EventListener添加到$scope(需要使用EventListener)。我怎么能听一次然后删除呢?

myApp.run(function($ionicPlatform, $cordovaGoogleAnalytics, $cordovaDevice, $ionicHistory, $rootScope) {
  var self = this;
  $ionicPlatform.ready(function() {
    document.addEventListener('onAdDismiss', function(e){
      $rootScope.$broadcast("adDismissed");
    });
  }
});

myApp.controller('quizController', ['$scope', '$rootScope', '$cordovaAdMob', function($scope, $rootScope, $cordovaAdMob) {
   var self = this;

   this.checkAnswer = function(){ ... };

   $rootScope.$on('adDismissed', function(){
      self.checkAnswer(true);
   });
}]);

编辑:我已尝试使用removeEventListener,但这不起作用。

1 个答案:

答案 0 :(得分:0)

通过调用侦听器函数,您将能够销毁它。如下:

var adDismissedListener = $rootScope.$on('adDismissed', function(){
      self.checkAnswer(true);
      adDismissedListener(); // Will destroy the listener.
   });

https://docs.angularjs.org/api/ng/function/angular.bind

通过一些谷歌搜索,我发现你也可以在创建听众之前运行这段代码。

$rootScope.$$listeners.nameOfYourEvent=[];