Доступ к $parent $parent в представлении нокаута - контекст вложенности

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

Как я могу ссылаться на $parent $parent во вложенном нокауте foreach/с привязками?

Пример -

    <!-- 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 -->

Оригинал

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

    <!-- 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 -->

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

    <!-- 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 -->

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

Ответ 1

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

Из docs:

$родители

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

$parents [0] - это модель представления из родительского контекста (т.е. ее то же, что и $parent)

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

$parents [2] - это модель представления из контекста прабабушкина.

... и т.д.

$корень

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

Ответ 2

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

$parentContext предоставляют множество полезных свойств, таких как ($data, $parent, $index,...)