2013-02-20 45 views
0

我視圖模型這樣的,通過相同的數組循環兩次?

 function viewModel() { 
      this.Items = ['A', 'B', 'C']; 
     } 

     ko.applyBindings(new viewModel()); 

我想打印出來的東西就是這樣,

<div data-bind="foreach: {data: Items, as: 'item1' }"> 
     <span data-bind="text: item1"></span> 
     <div data-bind="foreach: {data: Items, as: 'item2' }"> 
      <span data-bind="text: item2"></span> 
     </div>   
    </div> 

以上沒有工作,我得到的是沒有定義的錯誤說法的項目(在行我在第二次嘗試使用它)。

所以,我想我會嘗試這個,

 function viewModel() { 
      this.Items1 = ['A', 'B', 'C']; 
      this.Items2 = ['A', 'B', 'C']; 
     } 

     ko.applyBindings(new viewModel()); 

    <div data-bind="foreach: {data: Items1, as: 'item1' }"> 
     <span data-bind="text: item1"></span> 
     <div data-bind="foreach: {data: Items2, as: 'item2' }"> 
      <span data-bind="text: item2"></span> 
     </div>   
    </div> 

我得到一個語法錯誤。我究竟做錯了什麼?

謝謝。

+0

你想達到什麼目的?最終的結果應該是什麼? Knockout之所以不知道'Items'是否在你的'foreach'中,是因爲它遍歷了單個數組,並且'Items'在該範圍內不存在。 – 2013-02-20 19:01:19

回答

1

您需要更改上下文你的內循環: (例如根據你原來的意圖)

<div data-bind="foreach: {data: Items, as: 'item1' }"> 
    <span data-bind="text: item1"></span> 
    <div data-bind="foreach: {data: $parent.Items, as: 'item2' }"> 
     <span data-bind="text: item2"></span> 
    </div>   
</div> 
0

如果你想完成的陣列中,在吐出的每個值,只是改變你的標記着這一切:

<div data-bind="foreach: {data: Items, as: 'item1' }"> 
    <span data-bind="text: item1"></span>   
</div> 

這裏是的jsfiddle:http://jsfiddle.net/dymAQ/1/