向Ember应用程序添加“times”块帮助器

时间:2013-10-15 07:58:52

标签: javascript ember.js handlebars.js

我想在我的应用程序中添加一个块帮助器,它执行以下操作。在我的模板中,我希望能够写

{{#times n}}
<p>Some text</p>
{{/times}}

应该返回块内包含的代码n次(n应该是模板模型中的变量)。例如,当模板模型中的n为3时,输出应为

<p>Some text</p>
<p>Some text</p>
<p>Some text</p>

我读到在Ember中指定块助手是不可能的(还)。我的问题是否有某种解决方法?

亲切的问候, 的Marius

2 个答案:

答案 0 :(得分:0)

我认为(未经测试)这就是您所需要的:

Handlebars.registerHelper('times', function(context, options) {
    var result = "";

    for(var i=0, j=context.length; i<j; i++) {
      result = result + options.fn(this);
    }

     return result;
});

通读: http://handlebarsjs.com/block_helpers.html

答案 1 :(得分:-1)

一个非常简单的解决方案是控制器中的计算属性......

times: function(){
 var timesArray = [];
 for(var i = 0, l = this.get('model.n'); i < l; i++){
  timesArray[i]=i;
 }
  return timesArray;
}.property('model.n')

并使用正常的每个助手

{{#each controller.times}}
    <p>Some text</p>
{{/each}