2015-12-04 76 views
1

我已經爲Ionic實施了Admob Pro plugin,並且想收聽onAdDismiss -EventListener。我現在遇到的問題是,每次使用控制器(需要EventListener)打開視圖時,都會將此EventListener添加到$scope。我怎樣才能聽一遍並在之後刪除它?Ionic/Angular:收聽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嘗試過,但這個不起作用。

+0

你嘗試:'document.removeEventListener(「onAdDismiss」);' –

+0

肯定的,但不幸的是,這並不工作 –

+0

如果您的jQuery加載你可以使用 –

回答

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=[]; 
+0

謝謝你的$。一()方法。這很好用! –