AngularJS访问cookie的方式是什么?我看到过同时引用Cookie的服务和模块的信息,但没有示例。
有没有,或者没有AngularJS规范方法?
该答案已更新,以反映最新的稳定angularjs版本。一个重要的注意事项是$cookieStore周围有薄薄的包装纸$cookies。它们几乎相同,因为它们仅与会话cookie一起使用。虽然,这回答了原始问题,但是您可能还需要考虑其他解决方案,例如使用localstorage或jquery.cookie插件(这将为您提供更细粒度的控制并执行服务器端cookie。当然,在angularjs中这样做意味着您可能希望将它们包装在服务中并用于$scope.apply通知角度模型更改(在某些情况下)。
$cookieStore
$cookies
$scope.apply
还有一点需要注意的是,在提取数据时,两者之间会有细微的差别,具体取决于您$cookie以前存储的是值还是$cookieStore。当然,您真的想使用其中一个。
$cookie
除了添加对js文件的引用之外,您还需要注入ngCookies应用程序定义中,例如:
ngCookies
angular.module('myApp', ['ngCookies']);
那么您应该会很好。
这是一个功能最小的示例,在这里我展示了它cookieStore是围绕Cookie的薄包装:
cookieStore
<!DOCTYPE html> <html ng-app="myApp"> <head> <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> </head> <body ng-controller="MyController"> <h3>Cookies</h3> <pre>{{usingCookies|json}}</pre> <h3>Cookie Store</h3> <pre>{{usingCookieStore|json}}</pre> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular-cookies.js"></script> <script> angular.module('myApp', ['ngCookies']); app.controller('MyController',['$scope','$cookies','$cookieStore', function($scope,$cookies,$cookieStore) { var someSessionObj = { 'innerObj' : 'somesessioncookievalue'}; $cookies.dotobject = someSessionObj; $scope.usingCookies = { 'cookies.dotobject' : $cookies.dotobject, "cookieStore.get" : $cookieStore.get('dotobject') }; $cookieStore.put('obj', someSessionObj); $scope.usingCookieStore = { "cookieStore.get" : $cookieStore.get('obj'), 'cookies.dotobject' : $cookies.obj, }; } </script> </body> </html>
这些步骤是:
angular.js
angular-cookies.js
ng-app