如何在AngularJS应用程序中处理用户模型?
我正在重构一个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