1

次のように、URLに存在するIDに基づいてオブジェクトのセットをフィルタリングするAPIがあります。

http://localhost:8000/api/v1/goal_update/?goal__id=12&format=json

上記のURLでGETリクエストを行うコレクションがあります。コレクションのコードは次のとおりです。

  var GoalUpdateList = Backbone.Collection.extend({

    // Reference the Goal Update model
    model: GoalUpdate,

    // Do HTTP requests on this endpoint
    url: function() {
      return "http://localhost:8000/api/v1/goal_update/?goal__id=" + this.goal_id + "&format=json";
    },

    // Set the goal ID that the goal update list corresponds to
    initialize: function(goal_id) {
      this.goal_id = goal_id;
    },

  });

コレクションの新しいインスタンスを作成するときにIDを渡したいので、次のコードを持つビューを作成しました。

this.collection = new GoalUpdateList(this.model.get("id"));

ただし、モデルパラメータを渡していると思います。コレクションに使用するURLを指示する情報を渡そうとしています。そのため、検証関数を介してIDを実行し、残りのバックボーンコードを台無しにします。

4

1 に答える 1

4

すでに述べたように、Backboneのコレクションは、最初のパラメーターとしてモデルデータを想定しています。ただし、他のバックボーンオブジェクトと同様に、2番目のパラメータをオブジェクトリテラルとして指定できます。nullまたはを最初のパラメーターとして渡すだけundefinedで、コレクションinitializeメソッドでoptions2番目のパラメーターとしてを取得します。


GoalUpdateList = Backbone.Collection.extend({

  initialize: function(data, options){
    this.goal_id = options.goal_id;
  }

});

new GoalUpdateList(null, model.get("goal_id"));
于 2012-04-05T05:05:23.367 に答える