我有以下用户模型:
var UserModel = Backbone.Model.extend({
urlRoot: 'user',
defaults: {
fullName: null,
email: null,
password: null
}
});
现在我们可以CRUD(注册,更新信息,删除和获取用户)但是如何:
如何扩展我的UserModel以实现这一目标?
答案 0 :(得分:5)
我自己得到了答案。所以我再一次需要非粗暴的操作,如:
解决方案:
function nonCrudOperation(urlSegment, requestMethod){
return Backbone.sync.call(this, null, this, _.extend({
url: this.url() + '/' + urlSegment,
type: requestMethod
}, options));
};
var UsersModel = Backbone.Model.extend({
urlRoot: 'user',
activate: function(options){
return nonCrudOperation.call(this, 'activate', 'POST');
},
restorePassword: function(options){
return nonCrudOperation.call(this, 'restore-password', 'POST');
}
});
答案 1 :(得分:3)
将登录作为其端点分离出会话模型并使用它来完成登录事务可能更有意义。这些方面的东西:
var UserSessionModel = Backbone.Model.extend({
urlRoot: 'users/login',
defaults: {
email: null,
password: null
}
});
成功登录后,您可能会为实际用户换出会话:
var session = new UserSessionModel({ username: 'foo', password: 'bar' }),
user;
session.save({
success: function (attrs) {
user = new UserModel(attrs);
}
});
答案 2 :(得分:0)
使用自己的方法补充内置fetch
和save
以及常规$.ajax
调用是没有错的。例如,引入您自己的reset
和activate
方法是非常好的,这些方法对专用服务器URI执行常规$.post
以重置密码并相应地更新用户实例。