Доступ к $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
,...)