0

가능한 중복 :
Custom for-loop helper for EmberJS/HandlebarsJSEmberJs/Handlebars를 사용하여 for (i = 0; i <n; i ++)를 만드는 방법은 무엇입니까?

내가 웹 사이트에 대한 Handlebars 사용하고 난 중요한 질문이 있습니다 때로는

당신이 당신의 템플릿에 전체 배열을 포기하고 그냥 원하는을 첫 번째 요소를 보여주기 위해서 ... 어떻게 핸들바로 그렇게합니까? 나는

여기
+0

우리는 http://handlebarsjs.com/에서 간단한 반복자 예제를 사용할 수 없다는 것을 알아 주시기 바랍니다 block_helpers.html 왜냐하면 나중에 채워지는 ArrayController를 사용하기 때문에이 함수는 무언가가 변경 될 때 업데이트하지 않습니다. – stadja

답변

0

내가 그것을 어떻게했는지는 ... 찾을 수 없습니다 (그리고 그것은 작동!)

첫째, 내가 나의 모델은 '미리보기'속성/기능에 있었다, 단지를 돌려주는 배열의 arrayController :

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;  
}); 

그리고이 모든 마법 덕분에, 그때 내보기에서 호출 할 수 있습니다 : 다음

objectToLoop = Ember.Object.extend({ 
     ... 
    arrayController: [], 
    preview: function() { 
     return this.get('arrayController').toArray(); 
    }.property('[email protected]'), 
     ... 
}); 

, 나는 새로운 핸들 바 도우미를 추가

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

그게 전부입니다.

나는 그것이 최적 아니라는 것을 알고, 그래서 누구든지 그것을 개선하는 방법에 대한 아이디어가, 나 :

관련 문제