これが機能するために必要ないくつかのこと。
コレクションのバックボーンのコア「リセット」を、渡すデータを理解するカスタムのものに置き換えます。例えば:
reset: function (data) {
this.totalCount = data.total_count;
Backbone.Collection.prototype.reset.call(this, data.dataElements);
}
コレクションをリセットすると、リセットするオブジェクトから total_count が引き出され、dataElement 配列で Backbone のコア リセットが使用されます。これをサーバーから取得する場合は、「parse」で同様のことを行う必要があることに注意してください。
(サンプルが作業中の実際のコードのように見える場合)、レンダリングを開始する前にコレクションをリセットすることをお勧めします。
var dataCollectionList = new dataCollection();
dataCollectionList.reset(jsonData);
var App = new AppView({model : dataCollectionList});
ビューの「render」メソッドで、コレクションから「totalCount」プロパティを取得できます -
render : function() {
//Should spit the total count into the element, just as an example
this.$el.append(this.model.totalCount);
//or console.log it
console.log(this.model.totalCount);
return this;
}
出来上がり。補足 - Backbone を頻繁に使用する人として、人々が「モデル」のような属性 (つまり、peopleModel、itemModel など) を設定し、それが最終的にバックボーン コレクションになると、気が狂いそうになります。それが何であるかにちなんで名付けた方がはるかに明確ですが、一部のMVC純粋主義者は少し同意しないかもしれません.
また、このコード ブロックでは:
_.each(this.model.models, function (myData) {
$(this.el).append(new ItemView({model:myData}).render().el);
}, this);
する必要はありません_.each(this.model.models.......)
。コレクションを操作しているため、コレクションには「each」メソッドが組み込まれています。
this.model.each(function (myData) { ..... } , this);
かなりきれい。