2014-09-24 1 views
0

У меня две родительские и дочерние коллекции. Для каждой родительской строки я представляю дочерние строки в таблице html на основе условия, когда идентификатор родительской записи равен id дочерней записи. Html выглядит так:Столбцы таблицы рендеринга только один раз с использованием условного оператора нокаута

<tbody data-bind="foreach: $root.subGridRows"> 
      <tr data-bind="foreach: $root.subGridColumns"> 
      <!-- ko if: $parents[1][$root.parentRecordKey] === $parent[$root.childRecordKey] --> 
        <td> 
         <span data-bind="text: header"></span> 
        </td> 
      <!-- /ko --> 
      </tr> 
    </tbody> 

Я хочу визуализировать столбец, содержащий элемент span, только один раз для всех строк. Я не могу исключить вышеупомянутое условие нокаута, потому что он отображает столбец только для тех дочерних записей, чей идентификатор совпадает с родительским идентификатором записи.

+0

Ваш вопрос действительно неясен без соответствующего кода модели представления. Пожалуйста, отредактируйте свой вопрос и убедитесь, что у кода есть [минимальный реестр] (http://sscce.org) вашей ситуации. – Jeroen

ответ

0

Это трудно понять ваш вопрос, но это звучит как перемещение foreach из tr и в его собственной виртуальной foreach решить бы проблемы. Например:

<tbody data-bind="foreach: $root.subGridRows"> 
    <tr> 
     <td data-bind="if: $parent[$root.parentRecordKey] === $data[$root.childRecordKey]"> 
      <span data-bind="text: header"></span> 
     </td> 
     <!-- foreach: $root.subGridColumns --> 
      <td>Display other columns here</td> 
     <!-- /ko --> 
    </tr> 
</tbody> 

Это может быть немного выключен, а код не тестировался, но это должно помочь вам решить вашу проблему.

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