アイテムをカップルとして表示する必要があります。たとえば、次のようにします。
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'
}
このコードはうまく機能しますが、いずれかのアイテムのタイトルを更新すると、すべてのアイテムが再レンダリングされます。
修正方法は?この種のレイアウトをリアクティブで作成するにはどうすればよいですか?