2015-05-26 29 views
4

我收到錯誤 - 「$ cookies.remove不是函數」 - 嘗試在我的角度應用程序中清除cookie時。據我所見,我遵循角度文檔所說的內容,以及此論壇上刪除Cookie的內容。

這裏是我的服務,負責此,

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功能我得到這個問題的時候刪除的cookie 。

+1

的console.log($餅乾)?有沒有.remove方法? –

+0

您是否安裝了角餅乾?你是否將ngCookies添加到應用程序模塊的依賴項中?使用'console.dir($ cookies);'獲取對象的內容。是否定義了刪除功能?您必須打開瀏覽器(F12?)的控制檯才能看到輸出。 –

+0

您是否包含了angular-cookies.js? https://code.angularjs.org/1.3.15/ – laughingpine

回答

4

首先,您正在使用哪個版本的Angular.js?對我來說,你似乎在使用1.3.x,這意味着$ cookie實際上來自ngCookies插件。在這種情況下,$ cookie只不過是一個簡單的對象,在這個對象中寫入來創建一個新的cookie值。到直接引用從1.3.x中ngCookie文檔:

只有一個簡單的對象被暴露並且通過從該對象添加或刪除屬性 到/,創建/在 電流結束時刪除新Cookie $ EVAL。該對象的屬性只能是字符串。

需要安裝ngCookies模塊。

如果您使用1.4.x或更高版本,您的實施將實際上是正確的。

+0

嗨,我使用角度的v1.3.15。我認爲.remove的目的是爲了擺脫cookie中的財產。正如我在上面的回覆中所說的,我設法通過使用'delete $ cookies [「username」];''而不是 – user3407039

+0

您的假設是正確的,但.remove方法僅在1.4.x及更高版本中可用。角度的API文檔有時很難實現,但在左上角的文檔中有一個API版本選擇器。如果你選擇1.3,它會顯示出來。 –

+1

好吧,對不起,我應該意識到你是從你最初的帖子開始的。在將來我正在閱讀文檔時,我將更加關注列出的角度版本。 – user3407039

0

在你的頁面中包含角曲奇文件。

角的cookies文件: -

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