2013-06-12 3 views
68

Обновление для краткости

Как я могу ссылаться на $ родителей $ родителя в гнездовой Knockout Еогеасп/с креплениями?

Пример -

<!-- ko foreach: grandParent --> 
     <tr> 
      <!-- ko foreach: $parent.parents --> // <-- Doesn't work 
       <!-- ko foreach: children --> 
        <td data-bind="if: favToy().name == $parent.$parent.favToy().name"> 
         <span data-bind="text: favToy().name"></span> 
        </td> 
       <!-- /ko --> 
      <!-- /ko --> 
     </tr> 
    <!-- /ko --> 

Оригинал

Извините за путаницу вопрос, но я пытаюсь достичь значения второго уровня родителей, чтобы проверить против значения в текущем контексте (например, ниже) показывать только промежуток, если он соответствует значение A $ родителя в $ родителя (тьфу!)

<!-- ko foreach: grandParent --> 
     <tr> 
      <!-- ko foreach: $parent.parents --> 
       <!-- ko foreach: children --> 
        <td data-bind="if: favToy().name == $parent.$parent.favToy().name"> 
         <span data-bind="text: favToy().name"></span> 
        </td> 
       <!-- /ko --> 
      <!-- /ko --> 
     </tr> 
    <!-- /ko --> 

было бы легче сделать это таким W ay, но из того, что я прочитал, это невозможно, или я делаю это неправильно :)

<!-- ko foreach: grandParent --> 
     <tr> 
      <!-- ko foreach: $parent.parents --> 
       <!-- ko foreach: children ? favToy().name == $parent.$parent.favToy().name --> 
        <td data-bind="text: favToy().name"></td> 
       <!-- /ko --> 
      <!-- /ko --> 
     </tr> 
    <!-- /ko --> 

Любая помощь была бы принята с благодарностью.

+0

Я не понимаю ваш вопрос, что не работает? В чем проблема: синтаксис '$ parent. $ Parent' или что вы должны использовать' span', потому что вы не можете объединить 'foreach' и' if'? – nemesv

ответ

118

Используйте массив $parents, прародителем будет $parents[1]. Вы также можете использовать $root, если объект grandParent в вашем примере является самым верхним родителем.

Из docs:

родителей $

Это массив, представляющий все модели родительского вида:

$ родителей [0] является вид модели от родителя контекст (т. е. это , такой же, как и $ parent)

$ parents [1] - модель представления от дедушки Арент контекст

$ родителей [2] является вид модели из контекста прадедах

... и так далее.

$ корневая

Это основной вид модели объекта в корневом контексте, то есть, верхний родительского контекста. Обычно это объект, который был передан ko.applyBindings. Это эквивалентно $ parents [$ parents.length - 1].

+0

По какой-то причине '$ parent. $ Parent' не работал для меня, однако это решение работало нормально, и оно тоже короче! – PeterM

3

Вы можете использовать $parentContext.$parent.

$parentContext обеспечивают много полезных свойств, таких как ($data, $parent, $index ...)

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