使用backbone.js在外部api上获取,PUT和DELETE请求

时间:2012-12-04 18:41:58

标签: javascript backbone.js backbone-model backbone-collections

我有一个名为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

我如何实现这一目标?

我应该将模型的网址设置为此外部网址吗?我应该怎么解决这个问题?

2 个答案:

答案 0 :(得分:3)

如果在集合中的模型上设置ID,则同步将自动生效。例如,如果您的Todo模型的ID为123save(),则POSThttp://abc.com/data/123

来自Collection.url docs

  

集合中的模型将使用url构建自己的URL。

来自Model.url docs

  

生成格式为"/[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");
    }
  }
});