1

現在、複合ビューがあり、各 ItemView をそのインデックスに基づいてレンダリングしたいと考えています。

たとえば、クラスを 3 分の 1 に追加したいとしItemViewます。

私が傾いている解決策はappendHtml()、3 回ごとにクラスをビューに追加するように変更することです。このためのコードを以下に示します。

を使用する利点はありますgetItemView()か? 私が見る欠点は、インデックスに直接アクセスできないことです。

テンプレート

<script id="list-item" type="text/html">
  <%= name %>
</script>

<script id="list-layout" type="text/html">
    <div class='collection'>
        <h3><%= name %></h3>
        <ul></ul>
    </div>
</script>

JS

var ListItemView = Backbone.Marionette.ItemView.extend({
  template: '#list-item',
  tagName: 'li'
});

var ListComposite = Backbone.Marionette.CompositeView.extend({
  itemView: ListItemView,
  itemViewContainer: "ul",

  template: '#list-layout',

  appendHtml: function(cv, iv, index){
    if ((index + 1) % 3 == 0) iv.$el.addClass('rowend');

    var $container = this.getItemViewContainer(cv);
    $container.append(iv.el);
  }
});
4

1 に答える 1