2014-04-22 2 views
1

Я пытаюсь заполнить строки и ячейки моей таблицы, как следующее:knockout.js вложенными Еогеасп ссылки друг на друга

<tbody data-bind="foreach: {data: rows, as: 'row'}"> 
    <tr data-bind="foreach: {data: row, as: 'cell'}"> 
     <td data-bind="text: cell"></td> 
    </tr> 
</tbody> 

с этим, как мой строк вар:

self.rows = ko.observableArray([ 
      [ 
       ['Test', '10', '100', '98', '10', '15'] 
      ], 
      [ 
       ['Test2', '10', '100', '98', '10', '20'] 
      ] 
]); 

Это заполняет правильное количество строк, но только первый TD заполняется всем содержимым массива.

приводит:

<tbody data-bind="foreach: {data: rows, as: 'row'}"> 
    <tr data-bind="foreach: {data: row, as: 'cell'}"> 
     <td data-bind="text: cell">Test,10,100,98,10,15</td> 
    </tr> 

    <tr data-bind="foreach: {data: row, as: 'cell'}"> 
     <td data-bind="text: cell">Test2,10,100,98,10,20</td> 
    </tr> 
</tbody> 

Что я делаю неправильно?

ответ

3

У вас есть три уровня массивов, и вы только итерация два уровня в глубину. Если вы меняете данные rows гнездиться только два уровня глубины, он должен работать, как ожидалось:

self.rows = ko.observableArray([ 
    [ 
     'Test', '10', '100', '98', '10', '15' 
    ], 
    [ 
     'Test2', '10', '100', '98', '10', '20' 
    ] 
]); 

JSFiddle: http://jsfiddle.net/Zj2qN/

1

У вас есть массив третьего уровня. Вы уверены, что вам это нужно?

Если это так, вам нужно вложить еще одну привязку для привязки.

Я не думаю, что это так, я думаю, что вы хотите, чтобы ваш массив выглядеть так:

self.rows = ko.observableArray([[1,2,3],[4,5,6]]); 
Смежные вопросы