2012-04-05 8 views
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

バックボーンのコレクションでは、すでに指摘したように、モデルデータが最初のパラメータとして期待されています。しかし、他のBackboneオブジェクトと同様に、第2パラメータをオブジェクトリテラルとして指定することもできます。 nullまたはundefinedを最初のパラメータとして渡してから、コレクションinitializeメソッドでoptionsを2番目のパラメータとして取得します。


GoalUpdateList = Backbone.Collection.extend({ 

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

}); 

new GoalUpdateList(null, model.get("goal_id")); 
関連する問題