1

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

我如何实现这一目标?

我应该将模型的 url 设置为此外部 url 吗?我该如何解决这个问题?

4

2 回答 2

3

如果您在集合中的模型上设置 id,同步将自动进行。例如,如果您有Todo一个 id 为 的模型123save()它会POST变为http://abc.com/data/123.

来自Collection.url 文档

集合中的模型将使用 url 来构造它们自己的 URL。

来自Model.url 文档

生成表单的 URL: ,如果模型不是集合的一部分,则"/[collection.url]/[id]"回退到。"/[urlRoot]/id"

请参阅Backbone 的同步文档以了解 HTTP 方法如何映射到集合中模型上的各种 URL。

于 2012-12-04T18:44:52.063 回答
1

是的,我会在模型和集合上设置 url。

Todo = Backbone.Model.extend({
  url : function () {
    var base =  "http://abc.com/data/";
    if (this.isNew()) {
      return base;
    } else {
      return base + this.get("id");
    }
  }
});
于 2012-12-04T18:45:30.060 回答