Data binding 如何使用EmberJs/把手为(i=0;i<;n;i+;和#x2B;)制作一个?

Data binding 如何使用EmberJs/把手为(i=0;i<;n;i+;和#x2B;)制作一个?,data-binding,for-loop,ember.js,handlebars.js,view-helpers,Data Binding,For Loop,Ember.js,Handlebars.js,View Helpers,可能重复: 我用于一个网站,我有一个重要的问题: 有时你给你的模板一个完整的数组,你只想显示n个第一个元素。。。 你是怎么用把手的?我找不到…以下是我是如何做到的(而且很有效!!!) 首先,, 我的模型中有一个“预览”属性/函数,它只返回数组中的arrayController: objectToLoop = Ember.Object.extend({ ... arrayController: [], preview: function() {

可能重复:

我用于一个网站,我有一个重要的问题:

有时你给你的模板一个完整的数组,你只想显示n个第一个元素。。。 你是怎么用把手的?我找不到…

以下是我是如何做到的(而且很有效!!!)

首先,, 我的模型中有一个“预览”属性/函数,它只返回数组中的arrayController:

objectToLoop = Ember.Object.extend({ 
        ...
    arrayController: [],
    preview: function() {
        return this.get('arrayController').toArray();
    }.property('arrayController.@each'),
        ...
});
然后,我添加一个新的把手辅助对象:

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;     
});
handlebar.registerHelper(“for”),函数forLoop(arrayToLoop,选项){
var data=Ember.handlebar.get(this,arrayToLoop,options.fn);
如果(data.length==0){
返回“押记…”;
}
过滤=data.slice(options.hash.start | | 0,options.hash.end | | data.length);
var ret=“”;
对于(变量i=0;i
多亏了这些魔法,我才能在我看来称之为:

<script type="text/x-handlebars"> 
    <ul>
        {{#bind objectToLoop.preview}}
            {{#for this end=4}}
                <li>{{{someProperty}}}</li>
            {{/for}}
        {{/bind}}
    </ul>
</script>

    {{{#bind objectToLoop.preview} {{#为此目的=4}
  • {{{someProperty}}}
  • {{/for}} {{/bind}
就这样


我知道它不是最优的,所以无论谁对如何改进它有想法,请让我知道:)

我们不能使用中的简单迭代器示例,因为我使用的是稍后填充的ArrayController,并且此函数不会在发生更改时更新。