2015-03-24 3 views
0

у меня есть этот массив:Нокаут Еогеасп числовой массив

[{"room_id":"1","room_name":"CDI","workers":[[{"worker_id":"12","worker_name":"FF","worker_grade":"Q2"},{"worker_id":"13","worker_name":"Test","worker_grade":"Q1"}],[{"worker_id":"12","worker_name":"FF","worker_grade":"Q2"},{"worker_id":"13","worker_name":"Test","worker_grade":"Q1"}],[],[],[{"worker_id":"13","worker_name":"Test","worker_grade":"Q1"}]]},{"room_id":"2","room_name":"DD","workers":[[],[],[],[{"worker_id":"12","worker_name":"FF","worker_grade":"Q2"},{"worker_id":"13","worker_name":"Test","worker_grade":"Q1"}],[]]}] 

Моя проблема является цикл в у ViewModel:

<tbody data-bind="foreach: rooms"> 
      <tr> 
       <th data-bind="text: room_name"></th> 
       <!--ko foreach: workers--> 
       <td> 
       <!--ko foreach: 0--> 
       <!--ko text: worker_name--><!--/ko--> 
        <!--/ko--> 
       </td> 
       <td> 
        <!--ko foreach: 1--> 
        <!--ko text: worker_name--><!--/ko--> 
        <!--/ko--> 
       </td> 
       <td> 
        <!--ko foreach: 2--> 
        <!--ko text: worker_name--><!--/ko--> 
        <!--/ko--> 
       </td> 
       <td> 
        <!--ko foreach: 3--> 
        <!--ko text: worker_name--><!--/ko--> 
        <!--/ko--> 
       </td> 
       <td> 
        <!--ko foreach: 4--> 
        <!--ko text: worker_name--><!--/ko--> 
        <!--/ko--> 
       </td> 
       <!--/ko--> 
      </tr> 
     </tbody> 

Поскольку массивы после рабочих не являются ассоциативными, я не могу цикл через это. Но как я могу перейти через него и отобразить другие массивы вроде:

[{"worker_id":"12","worker_name":"Adriaan Wind","worker_grade":"Q2"},{"worker_id":"13","worker_name":"Test","worker_grade":"Q1"}] 

Решение выше не работает.

+0

хорошо 'fibi' я надеюсь, что это то, что вы смотрите на чек скрипку http://jsfiddle.net/supercool/74dh736s/44 /. –

ответ

0

Я думаю, вам нужно добавить имя, как «комнаты» для переписки и «рабочих» для связанных с рабочими привязанностями. И тогда вы можете связать свои данные в следующем порядке

ko.applyBindings(
 
    { "rooms" : [{ "room_id":"1","room_name":"CDI", 
 
     "workers":[{"worker_id":"12",                   "worker_name":"FF", 
 
        "worker_grade":"Q2"}, 
 
        {"worker_id":"13", 
 
        "worker_name":"Test", 
 
        "worker_grade":"Q1"} 
 
       ]} 
 
       ]});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.0.0/knockout-min.js"></script> 
 
<div data-bind="foreach: rooms"> 
 
    Room <span data-bind="text:room_name "></span> 
 
    <div data-bind="foreach: workers"> 
 
     Worker: <span data-bind="text: worker_name"></span><hr/> 
 
    </div> 
 
</div>

+0

Хорошая попытка 'Dnyanesh' должна быть проверена, если свойства не определены (в соответствии с json-кодом OP). вы можете заглянуть в скрипку в комментариях - cheers –

+0

Спасибо вам супер круто :) – Dnyanesh

Смежные вопросы