aw *_*rud 22 javascript backbone.js
我的一些Backbone模型应始终使用POST,而不是POST用于创建和PUT用于更新.我坚持使用这些模型的服务器能够支持所有其他动词,因此使用Backbone.emulateHTTP
也不是一个完美的解决方案.
目前我覆盖了isNew
这些模型的方法并让它返回true
,但这并不理想.
除了直接修改backbone.js代码之外,还有一种简单的方法可以逐个模型地实现这个目标吗?我的一些模型可以使用PUT(它们被持久化到支持所有动词的不同服务器,包括PUT),因此将Backbone.sync替换为将'update'方法转换为'create'的服务器也不理想.
And*_*uín 56
对于需要直接强制对实例发出POST/PUT请求的任何人:
thing = new ModelThing({ id: 1 });
thing.save({}, { // options
type: 'post' // or put, whatever you need
})
Run Code Online (Sandbox Code Playgroud)
Maa*_*oyy 15
Short和Sweet被置于Top
Backbone.emulateHTTP = true;
Run Code Online (Sandbox Code Playgroud)
这将使用Get for Pull和Post for All推送(读取创建,更新,删除)
将同步(方法,模型,[选项])直接添加到您需要覆盖的模型中.
YourModel = Backbone.Model.extend({
sync: function(method, model, options) {
//perform the ajax call stuff
}
}
Run Code Online (Sandbox Code Playgroud)
以下是一些更多信息:http://documentcloud.github.com/backbone/#Sync
我这样做的方式是sync()
如此改写
Models.Thing = Backbone.Model.extend({
initialize: function() {
this.url = "/api/thing/" + this.id;
},
sync: function(method, model, options) {
if (method === "read") method = "create"; // turns GET into POST
return Backbone.sync(method, model, options);
},
defaults: {
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10642 次 |
最近记录: |