n 個のサブモデルFoo
のコレクション( と呼びましょう) を含むバックボーン モデル ( と呼びましょう) があり、特定の 1 つのビューでは、これらのサブモデルのうちm 個だけを行に沿ったメッセージと共に表示したいと考えています。 「(nm)残り」の。Bar
今、私が持っているものは次のようなものです:
var FooView = Backbone.View.extend({
...
render: function() {
this._barViews = [];
var bars = this.model.get("bars");
var that = this;
_.each(bars.first(maxToShow), function(bar) {
that._barViews.push(new BarView({model:bar}));
}
var remaining = bars.length - maxToShow;
this.model.set("remaining", remaining > 0 ? remaining : undefined;
var json = this.model.toJSON();
$(this.el).html(this.template(json));
_(this._holdViews).each(function(hv) {
holdList.append($(hv.render().el));
});
}
});
これは機能しますが、この特定のビューに固有のものであるにもかかわらず、「remainingMessage」をモデルに注入しているため、ハックに感じます。(別のビューではbars
、すべての が表示されるか、まったく表示されないか、残りのメッセージが表示される場合と表示されない場合があります。) 入れ子になったビューについても、完全に満足しているわけではありません。これは、追加のテンプレート ファイルを作成し、忘れずに含める必要があることを意味するためです。それ(FWIW、サーバー側のコンパイルで、テンプレートにHandlebars.jsを使用しています)。
bars
(1)コレクションをmaxShown
アイテムに絞り込み、(2) ビューに残っている数を生成/含めるためのより良い方法はありますか?