我一直试图ngCookie
在我的应用程序中存储和检索Cookie。由于我无法设置使用创建的Cookie的路径或到期时间,因此ngCookie
不得不在其他地方查找。
所以我正在尝试使用这个jQuery cookie插件。
但是,我不知道如何在角度服务中使用它。在如何使jQuery插件在控制器和服务中可用时,答案一致地指向使用指令,但是在这种情况下,我不认为这是正确的方法,因为cookie是控制器和服务应注意的事情。
那么,有人将如何使jQuery插件可用于Angular服务?
您可以将jquery cookie API封装在工厂中,这将公开一些类似的方法:
angular.module('MyApp', []);
angular.module('MyApp').factory('CookieFactory', function(){
return {
getCookie: function(name){
return $.cookie(name);
},
getAllCookies: function(){
return $.cookie();
},
setCookie: function(name, value){
return $.cookie(name, value);
},
deleteCookie: function(name){
return $.removeCookie(name);
}
}
});
但是我们可以轻松地想象出当您获得cookie值时您想做些什么。那么通过AngularJS的API承诺进行回调呢?
因此我们的工厂变成:
angular.module('MyApp', []);
angular.module('MyApp').factory('CookieFactory', function($q, $timeout){
return {
getCookie: function(name){
var deferred = $q.defer();
$timeout(function() {
deferred.resolve($.cookie(name));
}, 0);
return deferred.promise;
},
getAllCookies: function(){
return $.cookie();
},
setCookie: function(name, value){
return $.cookie(name, value);
},
deleteCookie: function(name){
return $.removeCookie(name);
}
}
});
然后,您可以像这样在控制器中使用它:
angular.module('MyApp').controller('CookieCtrl', function(CookieFactory) {
CookieFactory.getCookie('mycookie').then(function(value){
//do that you want
});
});
在这里工作plunkr:http ://plnkr.co/edit/6KoUtp?p=preview
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句