2013-11-25 49 views
0

我是Angularjs的新手。我在我的個人網站上工作,正在使用角度。我希望人們能夠登錄。登錄後,我想將用戶名存儲在valueservice中,以便它始終可用。我可以做嗎。Angularjs,在運行時設置價值服務的價值

我試着在config()函數中做,但沒有成功。我使用配置功能的原因是因爲我在這裏檢查用戶是否已經登錄。

謝謝。

+0

請問你的登錄功能?它是一個cookie後端設置,然後您希望通過服務讀取用戶數據並將其暴露給應用程序的其餘部分?這裏的核心問題是你無法讀取用戶,或者你無法正確地將它分享給應用程序的其他部分? –

+0

我正在使用firebase api。我知道他們有一個整合,但我試圖讓自己的Firebase服務 – chandings

+0

的核心問題是我想維護一些全局變量,可以在運行時設置並可能會改變。登錄電子郵件ID只是其中之一 – chandings

回答

1

存儲數據的兩種基本方式應該是Angular中全局可用的。

首先是將它存儲在$ rootScope中。 rootScope是所有其他作用域的根目錄(顧名思義),因此它始終可用於所有模板,並且可以注入任何控制器/服務/等。它是用來就像普通$範圍,所以登錄服務會做這樣的事情:

app.service('LoginService', ['$rootScope', function($rootScope) { 
    var user = {}; //Get the user somehow 
    $rootScope.user = user; 
} 

第二種方法是使用一個服務的份額保留的數據。有關詳情,請參閱the answer here


在這種情況下,我會說與第一個一起使用$ rootScope。如果您擁有應該在全球範圍內提供的應用程序,則rootScope完全適用,如果您只在應用程序的幾個部分之間共享某些內容,請使用服務。

調用登錄服務的好地方在app.run()方法中。它應用程序啓動時運行的第一件事(除了配置後,我相信)。

0

不能設置模塊配置功能的服務價值,但你可以在模塊運行塊做
從角官方文檔:

  1. 配置塊 - 是否會在供應商登記執行,配置階段。 只有提供者和常量可以注入到配置塊中。這是爲了防止服務在完全配置之前發生意外實例化。
  2. 運行模塊 - 在創建注入器後執行並用於啓動應用程序。 只有實例和常量可以注入運行塊。這是爲了防止應用程序運行時進一步的系統配置。

相關鏈接:http://docs.angularjs.org/guide/module