我需要一个主干模型来根据正在执行的操作类型来访问各种URL.如何确定URL函数中的操作以便我可以指定适当的URL?例如:
DELETE:/ myapipath/itemtype/id/
POST:/ myapipath/special-path/
GET:/ myapipath/special-path /?code = ABC
我知道如何区分POST和其他一切:this.isNew()
但是,如何在自定义model.url函数中区分DELETE和GET?
请不要建议我更改服务器端api.这不取决于我.
谢谢!
Ben*_*kin 55
从概念上讲,Backbone模型的URL是资源的主要GET URL.要对某些操作使用不同的URL,请覆盖模型的同步功能.幸运的是,Backbone可以轻松覆盖:
window.MyModel = Backbone.Model.extend({
// ... other stuff ...
url: '/myapipath/special-path/?code=ABC',
methodUrl: {
'create': '/myapipath/special-path/',
'delete': '/myapipath/itemtype/id/'
},
sync: function(method, model, options) {
if (model.methodUrl && model.methodUrl[method.toLowerCase()]) {
options = options || {};
options.url = model.methodUrl[method.toLowerCase()];
}
Backbone.sync(method, model, options);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我再看一下Backbone源代码并注意到它合并了整个options参数来构建params,而不是options.params,并相应地更新了我的例子.
| 归档时间: |
|
| 查看次数: |
13343 次 |
| 最近记录: |