2015-10-05 28 views
0

我正在重構一個AngularJS應用程序,在那裏,幾乎所有東西都存儲在$rootScope中。如何在AngularJS應用程序中處理用戶模型?

在我用Angular構建的舊應用程序中,我爲每個模型創建了一個Service,然後在需要時在Controller中實例化它。

我問自己:它是確定整個用戶對象存儲 $ rootScope內或在這裏什麼是最好的做法?

如何確保在登錄時創建用戶,然後在整個應用程序中傳遞它?

+0

沒有什麼錯在$ rootScope通過範圍繼承規則發現模型存儲模型和建築指令。 – pixelbits

回答

1

看來一般在$ rootScope中存儲用戶喜歡的模型。但在我看來,它不是angularjs中的最佳實踐(但是我之前使用過$ rootScope方法)。

工廠是angularjs的美麗之一。一般我們用它來調用休息服務。但是你也可以用它創建一個模型。你也可以通過注入另一個模型來輕鬆擴展你的模型。這只是一個想法,可能有另一個更好的選擇來使用像angularjs中的對象模型。

讓我們看一個例子

// User Model 
app.factory('User', function() { 
    var User = function(username) { 
     this.username = username; 
     this.email = null; 
    }; 

    User.prototype.getDetails = function() { 
     var self = this; 
     return self.username; 
    }; 

    return User; 
}); 

// ExtendedUser Model 
app.factory('ExtendedUser', function(User) { 
    var ExtendedUser = function() { 
     User.apply(this, arguments); 
    }; 

    ExtendedUser.prototype = new User(); 

    function getEmail() { 
     var self = this; 
     // You can make an http call to get email like information as an extra 
     self.email = "[email protected]"; 
     return self; 
    } 

    ExtendedUser.prototype.getDetails = function() { 
     var self = this; 
     var extendedUser = getEmail(); 
     return extendedUser; 
    }; 
    return ExtendedUser; 
}); 
0

如果您不想在$rootScope中存儲用戶模型,您可以使用私有JS變量,Angular中的某些服務可以訪問它(因爲工廠和服務都是Angular中的單例)。

好的補充是,它很難確定用戶模型的存儲位置,唯一需要的是正確的封裝和代碼結構。

1

我想看看a0-angular-storage:https://github.com/auth0/angular-storage這對存儲用戶信息/令牌或任何要在整個應用中檢索的內容非常有用。

主要特點

用途的localStorage或sessionStorage的默認,但如果它不是,它採用ngCookies。 允許您保存JS對象,如果保存一個數字,則會得到一個數字,而不是字符串 使用緩存系統,以便如果您已有值,則不會再從該存儲中獲取該值。

相關問題