2013-10-09 3 views
2

배열에 몇 개의 행이 있는지 계산하는 데 핸들 바 도우미를 사용하고 있습니다. 2보다 크면 true를 반환하고 예상대로 작동합니다. 다음과 같이 보입니다 :핸들 막대 도우미가 반환 한 값의 조건을 설정하는 방법

define('templates/helpers/countRows', ['handlebars'], function (Handlebars) { 
    function countRows(selectedArray) { 
     var selectedArrayLength = selectedArray.length; 
     if (parseInt(selectedArrayLength) > 2) { 
      return true; 
     } 
    } 
    Handlebars.registerHelper('countRows', countRows); 
    return countRows; 
}); 

문제는 출력하기 전에 값이 true인지 아닌지 확인하기 위해 hbs 템플릿에 조건을 설정하려고합니다. 그것이 사실이 아니라면, 나는 그것을 출력하고 싶지 않습니다.

답변

6

가장 좋은 방법은 논리의이 유형을 처리하는 컨트롤러에서 계산 된 속성을 정의하는 것입니다 ..

{{#if countRows "my array"}} 
    markup that only gets displayed if value is true 
{{/if}} 

을하지만 불행히도 유효하지 않습니다 나는 이런 식으로 뭔가를 할 수 기대했다. 그런 다음 템플릿

App.ThingsController = Ember.ArrayController.extend({ 
    enoughRows: Ember.computed.gte('content.length', 2) 
}); 

: 템플릿에 포함 된이 같은

{{#if enoughRows}} 
    ... 
{{/if}} 

갖는 논리는 디버그 및 테스트하기 어렵다. 이 철학에 따라 핸들 바를 사용하면 참/거짓 이외의 조건을 검사하기가 어렵습니다.

많은 컨트롤러에서 이러한 종류의 로직을 반복해야하는 경우 믹스 인을 만드는 것을 고려하십시오.

App.EnoughRowsMixin = Ember.Mixin.create({ 
    enoughRows: Ember.computed.gte('content.length', 2) 
}); 
관련 문제