我有一个名为TodoModel
的模型和一个名为Todos
的集合。我用来获取数据的url是一个外部api,因此我将我的集合的url函数覆盖为
url:function(){
return "http://abc.com/data"
}
当我从我的视图中写Todos.fetch()
时,这很好用。
现在,我想传递一些参数,例如http://abc.com/data/[id]
。
点击每个元素后,将会有一个不同的api调用,具有不同的ID。例如:
http://abc.com/data/123
http://abc.com/data/234
我如何实现这一目标?
我应该将模型的网址设置为此外部网址吗?我应该怎么解决这个问题?
答案 0 :(得分:3)
如果在集合中的模型上设置ID,则同步将自动生效。例如,如果您的Todo
模型的ID为123
,save()
,则POST
为http://abc.com/data/123
。
集合中的模型将使用url构建自己的URL。
生成格式为
"/[collection.url]/[id]"
的网址,如果模型不属于集合,则返回"/[urlRoot]/id"
。
请参阅Backbone's sync documentation,了解HTTP方法如何映射到Collection中模型的各种URL。
答案 1 :(得分:1)
是的,我会在模型和集合上设置网址。
Todo = Backbone.Model.extend({
url : function () {
var base = "http://abc.com/data/";
if (this.isNew()) {
return base;
} else {
return base + this.get("id");
}
}
});