我的间隔工作正常并且破坏性很好但是当我导航到新窗口或新标签时,警报也会显示在那里。如何停止此警报?
$scope.checkGuest = function() {
$http.get(url + 'c_chat/checkGuestJson').success(function (data) {
$scope.guestAlerts = data
console.log(data);
if(data == 1) {
alert('plz register to enjoy more features');
}
else {
alert('plz register ! after 10 minutes your contact will be deleted');
}
})
}
我已经设置了这样的间隔11分钟
var intervalPromise = $interval(function () {
$scope.checkGuest()
}, 660000);
$scope.$on('$destroy', function () {
$interval.cancel(intervalPromise);
})
当路线改变时,警报不会显示正确,但是当新标签打开时,会显示警报,我不喜欢
app.config(function ($routeProvider) {
$routeProvider.when('/c_chat', {
template: '<div class="gusestAlert"></div>',
controller: app.chatCtrl
});
}
答案 0 :(得分:0)
这里的问题是,如果您在新标签中打开链接,则不会触发$destroy
侦听器,因为该角色的范围仍为“#34; alive&#34;。
您可以在此处执行的操作是每次打开新选项卡时强制调用侦听器。
例如
$scope.$on('$destroy', destroyInterval); //called by angular
$rootScope.$on('$destroyInterval', destroyInterval); //generic listener
function destroyInterval(){
$interval.cancel(intervalPromise);
})
<a href="/something" target="_blank" ng-click="$root.$emit('$destroyInterval') ">
go to new tab </a>