您可以封装在一个工厂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);
}
}
});
但我们可以想像easyli要当你的cookie值做一些事情。怎么样通过AngularJS的API承诺回调。
所以我们的工厂就变成了:
angular.module('MyApp').controller('CookieCtrl', function(CookieFactory) {
CookieFactory.getCookie('mycookie').then(function(value){
//do that you want
});
});
工作plunkr这里:
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);
}
}
});
然后你就可以在你的控制器一样,用它http://plnkr.co/edit/6KoUtp?p=preview
你在正确的轨道上;指令是针对DOM操作的,这显然不是。如果你已经走过这么远,为什么不花时间学习编写cookie并建立你自己的cookie服务? –
主要是因为我已经超过了我的截止日期,因为ngCookies的缺点,并且我非常渴望得到这个工作如果我今晚有任何睡眠的希望。 – gargantuan