2012-08-24 5 views
1

데이터가있는 배열이 있고 핸들 막대 템플릿으로 컴파일하려고 할 때 값을 가져 오는 중에 "var fn = options.fn, inverse = options.inverse; - 옵션이 정의되지 않았습니다"오류가 발생합니다. 의 "열". 누군가 여기서 무엇을 놓치고 있는지 알려 줄 수 있습니까?핸들 막대 템플릿

testData = [ 
    title : 'text1', 
    values : {column: [0, 0, 0]} 
] 


<table> 
{{#each}} 
<tr>  
    <td>{{title }}</td> 
    {{#each values}} 
     <td>{{column}}</td> 
    {{/each}} 
</tr> 
{{/each}} 
</table> 



var template = Handlebars.compile(tmpl_src);  
var html = template(testData); 
$(body).html(html); 
+0

'testData'는 실제로 어떻게 생겼습니까? 그것은 배열 또는 객체의 배열입니까? –

+0

testData는 객체의 배열입니다. – shava

답변

1

나는 당신의 오류를 재현 할 수는 없지만 그것은 핸들 바 도우미를 잘못 호출되는 것 같습니다. 가장 가능성이 높은 후보자는 {{#each}} 일 것입니다. each은 반복 할 항목이 필요합니다. 그런 다음 템플릿에 약간의 조정

var testData = [ 
    { title : 'text1', values : {column: [0, 0, 0]} }, 
    //... 
]; 
var template = Handlebars.compile(tmpl_src);  
var html = template({ 
    rows: testData 
}); 

:

<table> 
    {{#each rows}} 
     <tr>  
      <td>{{title}}</td> 
      {{#each values.column}} 
       <td>{{.}}</td> 
      {{/each}} 
     </tr> 
    {{/each}} 
</table> 

나는 또한했습니다 당신의 testData 템플릿 안에 이름을 가질 수 있도록 우리는 개체와 템플릿 함수를 호출하여이 문제를 해결할 수 있습니다 내부 each을 조정하여 values 자체에서 반복을 시도하지 않고 values 내부의 배열을 반복 처리하므로 {{.}}은 현재 항목을 참조하므로 이후에 0을 부여해야합니다.

데모 : http://jsfiddle.net/ambiguous/CRCG5/

+0

고마워. 그것은 나를 위해 일했습니다. – shava

관련 문제