似乎$watch
无法使用Cookie过期。这是我试过的代码
$scope.$watch(function(){
return $cookies.get('cookies')
},function(newVal,oldVal){
if(!newVal){
console.log('ok')
}
})
我可以使用$interval
进行检查。但我不希望每2秒或5秒进行一次呼叫摘要循环。
答案 0 :(得分:1)
不幸的是,it is not possible to read the cookie expiration time in JS所以我第一次想到迭代它们并在其到期日期间执行操作是不可能的。
如果您不想在每次“cookie检查”中启动摘要,则可以禁用使用$interval
设置为false
的第四个参数来调用它。请参阅$interval
docs。
示例代码:
.run(function($cookies, $interval) {
var previouslyAvailableCookies = Object.keys($cookies.getAll());
var watchCookieChanges = function() {
var availableCookies = Object.keys($cookies.getAll());
var expiredCookies = previouslyAvailableCookies.filter(function(cookieName) { return availableCookies.indexOf(cookieName) < 0; });
var newCookies = availableCookies.filter(function(cookieName) { return previouslyAvailableCookies.indexOf(cookieName) < 0; });
if (expiredCookies.length || newCookies.length) {
document.writeln("<p>New cookies: " + newCookies
+ "<br>Expired cookies: " + expiredCookies + '</p>');
}
previouslyAvailableCookies = availableCookies;
};
$interval(watchCookieChanges, 3000, 0, false);
})
和codepen。