gpt4 book ai didi

jquery - 如何在 Angular 服务中使用 jQuery.cookie 插件

转载 作者:行者123 更新时间:2023-12-01 00:51:42 25 4
gpt4 key购买 nike

我一直在尝试使用 ngCookie 在我的应用程序中存储和检索 cookie。由于我无法设置使用 ngCookie 创建的 cookie 的路径或过期时间,因此我不得不寻找其他地方。

所以我尝试使用这个 jQuery cookie plugin .

但是,我不知道如何在 angular.service 中提供它。思考如何使 jQuery 插件在 Controller 和服务中可用,答案一致指向 using 指令,但我认为在这种情况下这不是正确的方法,因为 cookie 是 Controller 和服务应该了解的东西。

那么,如何让 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 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);
}
}
});

然后你可以在 Controller 中使用它,如下所示:

angular.module('MyApp').controller('CookieCtrl', function(CookieFactory) {

CookieFactory.getCookie('mycookie').then(function(value){
//do that you want
});

});

在这里工作:http://plnkr.co/edit/6KoUtp?p=preview

关于jquery - 如何在 Angular 服务中使用 jQuery.cookie 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18966468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com