2012-06-25 6 views
1

동일한 테이블에 두 개의 코드가 있습니다. 하나는 다음과 같습니다 :이 같은knockoutjs foreach가 작동하지 않습니다.

<tr> 
    <th data-bind="text: tableHeaders()[0].title"></th> 
    <th data-bind="text: tableHeaders()[1].title"></th> 
    <th data-bind="text: tableHeaders()[2].title"></th> 
</tr> 

그리고 다른 외모 : 제대로

<tr data-bind="foreach: tableHeaders"> 
    <th data-bind="text: title"></th> 
</tr> 

첫 번째 인쇄 아웃, 두 번째는 아무것도 출력하지 않는 동안. 소스 코드를 보면 내가 jsfiddle (작동합니다 http://jsfiddle.net/nnjEf/4/를) 내 문제를 복제 할 수 없었습니다

<tr data-bind="foreach: tableHeaders"></tr> 

밝혀, 그래서 그것은 분명히 다른 문제입니다. 다른 방법으로 내가 해결할 수있는 아이디어가 있습니까?

+0

viewmodel을 게시 할 수 있습니까? HTML이 정확합니다. – Tyrsius

+0

jsfiddle 링크를 추가했지만 제대로 작동합니다. – bdev

+1

오류를 찾으려면 방화 켓을 검사하십시오. – Wiz

답변

1

Knockoutjs 2.0에서 처음 소개 된 '흐름 바인딩 제어'(즉, HTML로 foreach 인라인 사용)는 베타 릴리스 이름에서 처음 소개되었습니다. jsfiddle은 v2.0을 프레임 워크로 사용하고 있습니다.

실제 코드를 보지 않고 말할 수는 없지만이 코드는 지원하지 않는 하위 버전을 사용하고있는 것으로 의심됩니다. v1.2를 사용하는 경우 오래된 방법은 템플릿을 사용하는 것입니다 (예 :

<tr data-bind="template:{name: 'tableHeadersTemplate', foreach: tableHeaders}"> 
</tr> 

<script type="text/html" id="tableHeadersTemplate">  
    <th data-bind="text: title"></th> 
</script> 

이 기능은 v2.0 이상에서도 작동하지만 현재 사용중인 방식보다 훨씬 많은 마크 업을 생성합니다.

관련 문제