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);
}
}
});
しかし、クッキーの値を取得したときに何かをしたいと思うことは容易に想像できます。AngularJS の API promise によるコールバックはどうでしょうか。
したがって、私たちの工場は次のようになります。
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