1

という名前のモデルと という名前TodoModelのコレクションがありTodosます。データを取得するために使用する URL は外部 API であるため、コレクションの URL 関数を次のようにオーバーライドしています。

url:function(){
    return "http://abc.com/data"
}

これは、私の見解から書くとうまくいきTodos.fetch()ます。

今、私はいくつかのパラメータを渡したいhttp://abc.com/data/[id].

すべての要素をクリックすると、異なる ID を持つ異なる API 呼び出しが行われます。例えば:

  • 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"

HTTP メソッドがコレクション内のモデルのさまざまな URL にどのようにマップされるかについては、Backbone の同期に関するドキュメントを参照してください。

于 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 に答える