これは私の問題です:
- コレクションを保持するコンテナ ビューがあります。
- ページの読み込み時に、いくつかのモデルを取得し、このコレクションにそれらを入力してから、モデルをレンダリングします
- 着火イベント
- このイベントが発生したら、API を呼び出したい (入力パラメーターに基づいてモデルを返す)
- 次に、コレクションからすべての既存のモデルを削除し、新しいモデルを再設定してから、モデルをレンダリングします
これは、モデル/コレクション/ビューをセットアップする方法です
var someModel = Backbone.Model.extend({});
var someCollection = Backbone.Collection.extend({
model: someModel,
url: "api/someapi"
});
var someView = Backbone.View.extend({
events: {
"click #refresh": "refreshCollection"
},
initialize: function () {
this.collection.bind("reset", this.render, this);
},
render: function () {
// render stuff
},
refreshCollection: function (e) {
this.collection.fetch({data: {someParam: someValue});
this.render();
}
});
var app = function (models) {
this.start = function () {
this.models = new someCollection();
this.view = new someView({collection: this.models});
this.view.reset(models);
};
};
私の関心はここにあります:
refreshCollection: function (e) {
this.collection.fetch({data: {someParam: someValue});
this.render();
}
いくつかのパラメーターを渡すと、API はモデルの json 配列を返します。コレクション内のすべての既存のモデルを取り除き、返されたすべてのモデルをコレクションに入れ、ビューを更新したい (render() を使用)
これは、collection.set または collection.reset で可能であると理解しています。これらは両方ともモデルの配列を取り込みます。渡すモデルの配列がありません。
私は試した:
this.collection.fetch({
data: {someParam: someValue},
success: function (response) {
doSomethingWith(response.models)
}
});
しかし、モデルを手に入れたらどうしたらいいのかわからない。
正しい方向にプッシュしていただければ幸いです。