假设我有一个Backbone模型,我创建一个这样的模型实例:
var User = Backbone.Model.extend({ ... });
var John = new User({ name : 'John', age : 33 });
Run Code Online (Sandbox Code Playgroud)
我想知道当我用第二次使用John.save()目标(更新/ PUT)时我是否可以使用目标,当我用于目标时以及当我用于目标时/user/createJohn.save()/user/updateJohn.fetch()/user/getJohn.remove()/user/remove
我知道我可以John.url在触发任何方法之前每次定义,但我想知道是否可以自动发生一些如何不覆盖任何Backbone方法.
我知道我可以使用一个url /user/handle并根据请求方法处理请求(GET/POST/PUT/DELETE),但我只是想知道是否有办法在Backbone中为每个动作设置不同的url.
谢谢!
kub*_*etz 78
方法.fetch(),.save()以及.destroy()对Backbone.Model被检查,如果该模型已经.sync()确定,如果是的,它会被调用,否则Backbone.sync()将被调用(见链接的源代码的最后几行).
因此,其中一个解决方案是实现.sync()方法.
例:
var User = Backbone.Model.extend({
// ...
methodToURL: {
'read': '/user/get',
'create': '/user/create',
'update': '/user/update',
'delete': '/user/remove'
},
sync: function(method, model, options) {
options = options || {};
options.url = model.methodToURL[method.toLowerCase()];
return Backbone.sync.apply(this, arguments);
}
}
Run Code Online (Sandbox Code Playgroud)