AngularJS服务从对后端REST服务的调用中接收cookie。 cookie值用作变量的值,以便该变量的值可以在AngularJS应用程序中的其他模块重复重新初始化服务时持续存在,只要不再次调用REST服务来更改cookie的价值。我阅读了文档at this link,但文档中没有包含更改现有cookie值的方法。该文档也没有评论在服务模块中初始化cookie派生变量的值。
如何修改以下代码以管理整个服务生命周期中cookie值的更改,以便在后端REST调用指示它时进行更改,但是这样做在重新初始化AngularJS服务后,cookie是否仍然存在?
以下是我目前开发的代码:
Cookie由Spring RestController在后端服务器上生成,并与响应一起发送,如下所示:
response.addCookie(new Cookie("keyName", "oneValue"));
(来自服务器的响应还包括一个JSON对象,您可以在下面的http.post(..
中看到。
在客户端AngularJS app中,声明变量并使用AngularJS模块代码顶部的cookie值进行填充,如下所示:
someVariable : cookies.get('keyName'),
然后在模块的方法中的两个不同点填充或更改cookie的值,具体取决于尝试调用后端的结果,如下所示:
someModule.someVariable = $cookies.put('keyName', 'oneValue');
else:
someModule.someVariable = $cookies.put('keyName', 'anotherValue');
该模块的整个代码如下:
angular.module('someModule', ['ngCookies']).factory( 'someModule', function($rootScope, $http, $location, $cookies) {
var someModule = {
someVariable : cookies.get('keyName'),//populate variable
someMethod : function(funcJSON, callback) {
$http.post('/rest-service-url', funcJSON).then(function(response, $cookies) {
if(response.data.content=='whatweexpect'){
someModule.someVariable = $cookies.put('keyName', 'oneValue');//DOES THIS CHANGE VALUE OF COOKIE?
callback && callback(someModule.someVariable);
}else {
someModule.someVariable = $cookies.put('keyName', 'anotherValue');//DOES THIS CHANGE VALUE OF COOKIE?
callback && callback(false);
}
});
},
init : function() {
//some unrelated stuff
}
};
return someModule;
});
然后ng-show
使用cookie的值来确定在视图中向用户显示的内容,如下所示:
<div ng-show="someVariable=='oneValue'">
<p>oneValue says we give this content.</p>
</div>
<div ng-show="someVariable=='anotherValue'">
<h1>anotherValue says we give this other content.</h1>
</div>
<div ng-show="someVariable==null">
<h1>Assume the backend REST service has never been called, so give default content.</h1>
</div>
我对上述代码进行了哪些具体更改,以便通过初始化,重复调用后端REST服务以及重复重新初始化等所有更改来管理cookie的值?