AngularJS: $cookies.remove不是一个函数。

5
我在尝试清除我的angular应用程序中的cookies时,出现了错误 -“$ cookies.remove不是一个函数”。 据我所见,我按照angular文档和论坛上的建议进行操作以删除cookies。
下面是处理此操作的服务代码:
app.service('authService', function ($cookies) {

    this.SetUsername = function (username) {
        $cookies.username = username;
    }

    this.GetUsername = function () {
        return $cookies.username;
    }

    this.clearCookie = function(){
        $cookies.remove("username");

    }

});

get和set函数都能正常工作,只有在调用清除cookie函数时才会出现问题。


2
console.log($cookies)?有.remove方法吗? - Vasiliy vvscode Vanchuk
你安装了angular-cookies吗?并且在你的应用程序模块的依赖中添加了ngCookies吗?使用console.dir($cookies);获取对象内容。是否定义了删除函数?你需要打开浏览器控制台(F12?)来查看输出。 - Peter Paul Kiefer
你是否包含了angular-cookies.js?https://code.angularjs.org/1.3.15/ - laughingpine
当我在控制台中键入它时,它会显示$cookies未定义,但我不知道这可能是怎么回事,因为我正常使用它来存储值,而且没有抛出错误。它被添加到我的模块中,并且正确地被包含。我通过使用delete $ cookies["username"]来使其工作,但我不确定为什么这样做可以而另一种方法却不行。 - user3407039
3个回答

4

首先,你使用的是哪个版本的Angular.js?在我看来,你正在使用1.3.x,这意味着$cookies实际上来自ngCookies插件。在这种情况下,$cookies只是一个简单的对象,写入它会创建一个新的cookie值。直接引用从1.3.x ngCookie文档中

仅公开一个简单对象,通过向该对象添加或删除属性,在当前$eval结束时创建/删除新的cookie。该对象的属性只能是字符串。

需要安装ngCookies模块。

如果您正在使用1.4.x及以上版本,则您的实现实际上是正确的。


嗨,我正在使用Angular的v1.3.15版本。我认为“.remove”的目的是为了清除cookie中的属性。就像我在上面的回复中所说,我通过使用“delete $cookies [“username”];”来实现这个功能。 - user3407039
你的假设是正确的,但 .remove 方法仅在 1.4.x 及以上版本中可用。Angular 的 API 文档有时很难让人意识到这一点,但文档左上角有一个 API 版本选择器。如果你选择 1.3 版本,它就会显示出来。 - Sargo Darya
1
啊,好的,抱歉我应该从你最初的帖子中意识到你的意思。以后我会更加注意阅读文档时列出的 Angular 版本。 - user3407039

0

在您的页面中包含Angular Cookies文件。

Angular Cookies文件:

<script src="https://code.angularjs.org/1.4.4/angular-cookies.js"></script>

0

尝试在注销时执行此操作,它将一次性清除所有的cookies

app.controller('controllername', function ($cookies) {
    $cookies.remove();})

请添加更多的解释。 - Harshith Rai

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