欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解Angular操作cookies方法

程序员文章站 2022-07-04 21:42:50
本文介绍了angular操作cookies方法,分享给大家,具体如下: var setcookie = function(name, value) {...

本文介绍了angular操作cookies方法,分享给大家,具体如下:

var setcookie = function(name, value) {
         var days = 30;
         var exp = new date();
         exp.settime(exp.gettime() + days * 24 * 60 * 60 * 1000);
         document.cookie = name + "=" + escape(value) + ";expires=" + exp.togmtstring();
         //$cookies[name] = value;
        };

这是用javascript写的方法去设置

var getcookie = function(name) {
  var arr, reg = new regexp("(^| )" + name + "=([^;]*)(;|$)");
  if (arr = document.cookie.match(reg))
   return unescape(arr[2]);
  else
   return null;
 }

这是用javascript写的方法去读取

其实angular也有相应的方法去操作cookies的,加载这两个module的依赖文件

<script src="http://code.angularjs.org/1.2.9/angular.min.js"></script>
<script src="http://code.angularjs.org/1.2.9/angular-cookies.min.js"></script>

源码是这样的

function(a, b, c) {
  "use strict";
  b.module("ngcookies", ["ng"]).factory("$cookies", ["$rootscope", "$browser",
   function(a, d) {
    function e() {
     var a, e, f, i;
     for (a in h) k(g[a]) && d.cookies(a, c);
     for (a in g) e = g[a], b.isstring(e) ? e !== h[a] && (d.cookies(a, e), i = !0) : b.isdefined(h[a]) ? g[a] = h[a] : delete g[a];
     if (i) {
      i = !1, f = d.cookies();
      for (a in g) g[a] !== f[a] && (k(f[a]) ? delete g[a] : g[a] = f[a], i = !0)
     }
    }
    var f, g = {},
     h = {},
     i = !1,
     j = b.copy,
     k = b.isundefined;
    return d.addpollfn(function() {
     var b = d.cookies();
     f != b && (f = b, j(b, h), j(b, g), i && a.$apply())
    })(), i = !0, a.$watch(e), g
   }
  ]).factory("$cookiestore", ["$cookies",
   function(a) {
    return {
     get: function(c) {
      var d = a[c];
      return d ? b.fromjson(d) : d
     },
     put: function(c, d) {
      a[c] = b.tojson(d)
     },
     remove: function(b) {
      delete a[b]
     }
    }
   }
  ])
 }(window, window.angular) 

$cookies[name] = value; 这个是angular设置cookies方法

$cookiestore

提供一个被session cookies支持的键值对(字符串-对象)存储。被存入和取出的对象将自动通过angular的tojson/fromjson进行序列化/反序列化。

$cookies

提供浏览器cookies的读/写访问操作。

这两个都要引入ngcookies模块才能使用,这个模块在1.4版本之后就有了

从源码中得知$cookiestore返回了三个方法get put remove 他们分别用tojson/fromjson进行序列化/反序列化

简单的写了几个例子来测试下

<!doctype html>
<html ng-app="autumnswindsapp" ng-controller="aswcontroller">

 <head>
  <meta charset="utf-8">
  <title></title>
 </head>
 <script src="http://code.angularjs.org/1.2.9/angular.min.js"></script>
 <script src="http://code.angularjs.org/1.2.9/angular-cookies.min.js"></script>

 <body>
  {{title}}
 </body>
 <script>
  var autumnswindsapp = angular.module('autumnswindsapp', ['ngcookies']);
  autumnswindsapp.controller('aswcontroller', function($cookies, $cookiestore, $scope) {
   $cookies.name = 'autumnswind';
   $scope.title = "hello, i'm autumnswind :)";
   $cookiestore.put("skill", "##");
   //删除cookies
   $cookiestore.remove("name");
   //设置过期日期
   var time = new date().gettime() + 5000;
   $cookiestore.put("cookie", "hello wsscat", {
    expires: new date(new date().gettime() + 5000)
   });

   $cookiestore.put("objcookie", {
    value: "wsscat cat cat",
    age: "3",
   }, {
    expires: new date(new date().gettime() + 5000)
   });
   console.log($cookies);
   console.log($cookies['objcookie']);
  })
 </script>
</html>

其实平时我们这样就可以把自己需要的cookies设置进去 

$cookies.name = 'autumnswind';

但是当我们要设置一个有效时间的时候我们就用这样的方法把它设置进去

var time = new date().gettime() + 5000;
   $cookiestore.put("cookie", "hello wsscat", {
    expires: new date(new date().gettime() + 5000)
   });

我们还可以进行删除等操作

$cookiestore.remove("name");

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。