2013-10-15 4 views
3

Я хочу добавить блок-помощник в свое приложение, что делает следующее. В моем шаблоне я хочу, чтобы иметь возможность написатьДобавление вспомогательного блока блока "times" к Ember-приложению

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

, который должен возвращать код включен внутри блока п раз (п должна быть переменной из модели шаблона). Например, когда п в модели шаблона 3, выход должен быть

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

Я прочитал, что определение блока хелперы в Эмбер возможно (пока) нет. Есть ли какое-то обходное решение для моей проблемы?

С наилучшими пожеланиями, Marius

ответ

-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') 

И использовать нормальный каждый Helper

{{#each controller.times}} 
    <p>Some text</p> 
{{/each} 
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

По RC7, Эмбер не поддерживает пользовательский блок помощников. Возможно, они изменили это в RC8 или 1.0, но это кажется довольно большим изменением для небольшого выпуска. – GJK

Смежные вопросы