0

アイテムをカップルとして表示する必要があります。たとえば、次のようにします。

Template.container.couples = function() {
    var items = Items.find({}, {sort: {sort_field: 1}}).fetch();
    var couples = [];
    for (var i = 0; i < items.length; i++) {
        couples.push({
            itemA: items[i],
            itemB: items[i + 1]
        });
        i++;
    }
    return couples;
};

<template name="container">
   <ul>
       {{#each couples}}
           <li>
               <p class="item-a">{{>item itemA}}</p>
               <span>|</span>
               <p class="item-b">{{>item itemB}}</p>
           </li>
       {{/each}}
   <ul>
</template>

<template name="item">
    <strong>{{title}}</strong>
</template>

アイテムは次のようになります。

{
   sort_field: 1,
   title: 'Item 1',
   type: 'A'
},
{
   sort_field: 2,
   title: 'Item 2',
   type: 'B'
},
{
   sort_field: 3,
   title: 'Item 3',
   type: 'A'
},
{
   sort_field: 4,
   title: 'Item 4',
   type: 'B'
},
{
   sort_field: 5,
   title: 'Item 5',
   type: 'A'
}

このコードはうまく機能しますが、いずれかのアイテムのタイトルを更新すると、すべてのアイテムが再レンダリングされます。

修正方法は?この種のレイアウトをリアクティブで作成するにはどうすればよいですか?

4

1 に答える 1

0

Meteor 0.8.0 の時点で、Meteor は変更されたコンテンツのみを自動的に再レン​​ダリングします。

于 2015-04-20T13:59:31.227 に答える