2012-10-15 5 views
1

데이터는 다음과 같습니다. [[1,2,3],[4,5,6]] 그리고 때로는 [[1,2],[4,5]]과 같습니다. 다음은 HTML입니다.배열의 넉 아웃 배열

<button data-bind="click: refreshJSON">Test</button> 
<table> 
    <tbody data-bind="foreach: array"> 
     <tr data-bind="foreach: subarray"> 
      <td data-bind="text: $data"></td> 
     </tr> 
    </tbody> 
</table> 

<script type="text/javascript"> 


    var ViewModel = { 

     tableModel : ko.observableArray([[1,2,3],[4,5,6]]), 

     refreshJSON : function(){ 
      this.tableModel([[1,2],[4,5]]); 
     } 

    }; 

    ko.applyBindings(ViewModel); 

</script> 

나는 내가이 작업을 수행하거나, 어떻게 HTML에 data-binds을 수행하는 방법에 대한 불분명 해요 그러나 서브 어레이의 각 ko.observableArray()를 사용하는 한 같은데요.

답변

3

업데이트 : observableArray 비트 내의 observableArray를 제거했습니다. 분명히 그것은 작동하지 않습니다. 그냥 외부 컬렉션을 묶어 라.

바인딩 부분

은 매우 간단합니다 :

<div data-bind="foreach: tableModel"> 
    <div data-bind="foreach: $data"> 
     <span data-bind="text: $data"></span> 
    </div> 
</div> 
+0

단지 직접'tableModel'을 설정, 개별적으로 항목을 추가 할 필요가 없습니다. 그러나 어쨌든, 바인딩은 바로 수정해야했습니다. –

+0

현재, knockout은'observableArray' 목록 안의'observableArray'와 잘 맞지 않습니다. Jeff가 말했듯이, 여러분은 outer observableArray 만 필요하고, 그냥 outerArray로 설정하면됩니다. 이 [문제] (https://github.com/SteveSanderson/knockout/issues/482)를 참조하십시오. –

+0

@JeffMercado : 나는 그것을 시도하지 않았지만 observableArray 내부에 배열이 있다면 내부 배열에 대한 제거 및 추가를 볼 수 있습니까? 나는 그렇게 생각하지 않을 것이다. 하지만 (마이클에 따르면) observableArray를 어쨌든 observerableArray에 포함시키지 않는다고 생각합니다. –