Angular - $cookies未定义

3

我试图在控制器中使用Angular cookies,但出现了一些问题,它总是未定义:

MyApp.controller('ValidationController', ["$cookies", function($cookies) {
    debugger; //checking $cookies here return an object
    $cookies.put("test","test"); //trying to add value to the cookie here return TypeError: undefined is not a function
    alert(JSON.stringify($cookies));

}]);


var MyApp = angular.module("MyApp", [
    "ui.router",
    "ui.bootstrap",
    "oc.lazyLoad",
    "ngSanitize",
    "ngCookies"
]);

以下是完整的堆栈错误信息:

TypeError: undefined is not a function
    at new <anonymous> (CookiesController.js:6)
    at Object.e [as invoke] (angular.min.js:37)
    at $get.z.instance (angular.min.js:76)
    at angular.min.js:59
    at s (angular.min.js:7)
    at v (angular.min.js:59)
    at g (angular.min.js:52)
    at angular.min.js:51
    at angular.min.js:17
    at l.$get.l.$eval (angular.min.js:126)

任何想法?

你正在使用哪个版本的Angular? - Pankaj Parkar
1
你是否已将 'ngCookies' 添加为你的应用依赖项? - Or Guz
在我的问题中添加了完整的堆栈输出。 - Asaf Nevo
我认为应该使用$cookieStore而不是$cookie。 - Pankaj Parkar
2
似乎在Angular 1.3.10中,$cookie没有setter函数,参见https://code.angularjs.org/1.3.15/docs/api/ngCookies/service/$cookies,而在`1.4.0`中有,详见https://code.angularjs.org/1.4.0-beta.6/docs/api/ngCookies/service/$cookies。 - Pankaj Parkar
显示剩余9条评论
1个回答

5
似乎在 angular 1.3.10 中,$cookies 没有设置器,而angular 1.4.0提供了该功能,请参阅其文档。
您可以通过两种方式解决问题:
  1. 如果您要继续使用 angular 1.3.10,则请使用 $cookieStore 对象代替 $cookies
  2. 升级到最新版本的 angular 1.4.0.beta.6
希望这能帮到您,谢谢。

1
啊啊啊,Angular在1.4中更改了cookies的方式:“在Angular 1.3之前,$cookies公开了代表当前浏览器cookie值的属性。在1.4版本中,这种行为已经更改,$cookies现在提供了标准的API,包括getter、setter等。” https://docs.angularjs.org/api/ngCookies/service/$cookies - Connor Leech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接