在模板中拆分游标结果
Split cursor results in template
我想生成一个类似这样的模板:
<ul>
<li>A B C D</li>
<li>E F G H</li>
</ul>
我提供给模板的数据是一个游标,它有 8 行(每个字母一行)。
我知道我可以进行提取并将结果分成 4 组,但如果我没记错的话,提取效率较低,例如我将 A 的值更新为 1,它会重新加载所有内容。
如有任何关于如何执行此操作的建议,我们将不胜感激。
html:
<template name="outer">
<ul>
{{#each list}}
{{> quadItem }}
{{/each}}
</ul>
</template>
<template name="quadItem">
<li>{{#each quad}}{{item}} {{/each}}</li>
</template>
js:
Template.outer.helpers({
list: function(){
var arrayOfQuads = [];
var array = myCollection.find().fetch();
for ( var i = 0; i < array.length; i += 4 ){
arrayOfQuads.push(array.slice(i,i+3));
}
return arrayOfQuads;
}
});
Template.quadItem.helpers({
quad: function(){
return this; // data context should be one row of arrayOfQuads
},
item: function(){
return this; // data context should be one element of a quad
}
});
这是非常快速和肮脏的,我相信它可以变得更优雅。
例如参见 [=12=].
我想生成一个类似这样的模板:
<ul>
<li>A B C D</li>
<li>E F G H</li>
</ul>
我提供给模板的数据是一个游标,它有 8 行(每个字母一行)。
我知道我可以进行提取并将结果分成 4 组,但如果我没记错的话,提取效率较低,例如我将 A 的值更新为 1,它会重新加载所有内容。
如有任何关于如何执行此操作的建议,我们将不胜感激。
html:
<template name="outer">
<ul>
{{#each list}}
{{> quadItem }}
{{/each}}
</ul>
</template>
<template name="quadItem">
<li>{{#each quad}}{{item}} {{/each}}</li>
</template>
js:
Template.outer.helpers({
list: function(){
var arrayOfQuads = [];
var array = myCollection.find().fetch();
for ( var i = 0; i < array.length; i += 4 ){
arrayOfQuads.push(array.slice(i,i+3));
}
return arrayOfQuads;
}
});
Template.quadItem.helpers({
quad: function(){
return this; // data context should be one row of arrayOfQuads
},
item: function(){
return this; // data context should be one element of a quad
}
});
这是非常快速和肮脏的,我相信它可以变得更优雅。 例如参见 [=12=].