AngularJS $ watch cookie过期

时间:2016-05-12 07:09:08

标签: javascript angularjs cookies watch

后端返回此标题:

Set-Cookie: session_id=5734283c02b8755f85a5f622; Domain=topleveldomain.com; Expires=Thu, 12-May-2016 06:52:55 GMT; Max-Age=5; Secure; Path=/

来自https://api.topleveldomain.com并使用$cookies.get('session_id')

返回5734283c02b8755f85a5f622。但是,当我尝试使用$watch时似乎没有任何作用:

$scope.$watch($cookies.get('session_id'), function(newValue, oldValue) {
    console.log(oldValue);
    console.log(newValue);
});

,也不

$scope.$watch(function() { return $cookies.get('session_id'); },
    function(newValue) {
        console.log(newValue);
    }
);

以上任何一项,true作为第三个参数,在5秒后记录undefined。如果我从浏览器手动删除cookie,它不会记录undefined。如果我调用$watch),则不会触发$cookies.remove('session_id。我确实试过Firefox和Chrome都没有成功。如何查看cookie是否已过期?

编辑:我目前的解决方案

由于$cookies.get()似乎有用,我做了一个quickfix:

$interval(function() {
    if($cookies.get('session_id') === undefined) {
        console.log('logged out');
    } else {
        console.log('still logged in');
    }
}, 2000);

然而,我发现这种“糟糕”的风格,因为我并没有真正使用适当的AngularJS。但是,在找到合适的解决方案之前,这是我正在使用的代码

0 个答案:

没有答案