0
可能重複:
Custom for-loop helper for EmberJS/HandlebarsJS如何用EmberJs/Handlebars製作一個for(i = 0; i <n; i ++)?
我用Handlebars的一個網站,我有一個重要的問題:
有時候,你給你的模板全陣列只是想和你顯示第一個元素... 你怎麼用把手做到這一點?我找不到......
可能重複:
Custom for-loop helper for EmberJS/HandlebarsJS如何用EmberJs/Handlebars製作一個for(i = 0; i <n; i ++)?
我用Handlebars的一個網站,我有一個重要的問題:
有時候,你給你的模板全陣列只是想和你顯示第一個元素... 你怎麼用把手做到這一點?我找不到......
這裏是我是如何做到的(和它的作品!)
首先, 我在我的模型中的「預覽」屬性/功能,只是返回arrayController陣列中的:
objectToLoop = Ember.Object.extend({
...
arrayController: [],
preview: function() {
return this.get('arrayController').toArray();
}.property('[email protected]'),
...
});
然後,我添加了一個新的把手幫手:
Handlebars.registerHelper("for", function forLoop(arrayToLoop, options) {
var data = Ember.Handlebars.get(this, arrayToLoop, options.fn);
if (data.length == 0) {
return 'Chargement...';
}
filtered = data.slice(options.hash.start || 0, options.hash.end || data.length);
var ret = "";
for(var i=0; i< filtered.length; i++) {
ret = ret + options.fn(filtered[i]);
}
return ret;
});
並感謝所有這個魔法,然後我就可以把它在我的觀點:
<script type="text/x-handlebars">
<ul>
{{#bind objectToLoop.preview}}
{{#for this end=4}}
<li>{{{someProperty}}}</li>
{{/for}}
{{/bind}}
</ul>
</script>
就是這樣。
我知道這是不是最優的,那麼誰對如何改進它的想法,請讓我知道:)
我們不能從http://handlebarsjs.com/使用簡單的迭代器例子block_helpers.html,因爲我使用了一個稍後填充的ArrayController,當這個函數改變時這個函數不會更新。 – stadja