加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 07:07:31 所属栏目:安全 来源:网络整理
导读:我一直在尝试使用ngCookie在我的应用程序中存储和检索cookie.由于我无法设置使用ngCookie创建的cookie的路径或过期,我不得不寻找其他地方. 所以我试图使用这个jQuery cookie plugin. 但是,我无法弄清楚如何在角度服务中提供它.关于如何在控制器和服务中使用j
我一直在尝试使用ngCookie在我的应用程序中存储和检索cookie.由于我无法设置使用ngCookie创建的cookie的路径或过期,我不得不寻找其他地方.

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

但是,我无法弄清楚如何在角度服务中提供它.关于如何在控制器和服务中使用jQuery插件的问题,答案一致指向使用指令,但我不认为在这种情况下这是正确的方法,因为cookie是控制器和服务应该知道的东西.

那么,有人会如何为Angular服务提供jQuery插件?

解决方法

您可以在工厂中封装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',function($q,$timeout){

    return {
        getCookie: function(name){
           var deferred = $q.defer();

           $timeout(function() {
               deferred.resolve($.cookie(name));
           },0);

           return deferred.promise;
        },deleteCookie: function(name){
            return $.removeCookie(name);
        }
    }
});

然后你就可以在你的控制器中使用它:

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

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

});

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读