我正在重構一個AngularJS應用程序,在那裏,幾乎所有東西都存儲在$rootScope
中。如何在AngularJS應用程序中處理用戶模型?
在我用Angular構建的舊應用程序中,我爲每個模型創建了一個Service,然後在需要時在Controller中實例化它。
我問自己:它是確定整個用戶對象存儲 $ rootScope內或在這裏什麼是最好的做法?
如何確保在登錄時創建用戶,然後在整個應用程序中傳遞它?
我正在重構一個AngularJS應用程序,在那裏,幾乎所有東西都存儲在$rootScope
中。如何在AngularJS應用程序中處理用戶模型?
在我用Angular構建的舊應用程序中,我爲每個模型創建了一個Service,然後在需要時在Controller中實例化它。
我問自己:它是確定整個用戶對象存儲 $ rootScope內或在這裏什麼是最好的做法?
如何確保在登錄時創建用戶,然後在整個應用程序中傳遞它?
看來一般在$ 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;
});
如果您不想在$rootScope
中存儲用戶模型,您可以使用私有JS變量,Angular中的某些服務可以訪問它(因爲工廠和服務都是Angular中的單例)。
好的補充是,它很難確定用戶模型的存儲位置,唯一需要的是正確的封裝和代碼結構。
我想看看a0-angular-storage:https://github.com/auth0/angular-storage這對存儲用戶信息/令牌或任何要在整個應用中檢索的內容非常有用。
主要特點
用途的localStorage或sessionStorage的默認,但如果它不是,它採用ngCookies。 允許您保存JS對象,如果保存一個數字,則會得到一個數字,而不是字符串 使用緩存系統,以便如果您已有值,則不會再從該存儲中獲取該值。
沒有什麼錯在$ rootScope通過範圍繼承規則發現模型存儲模型和建築指令。 – pixelbits