Нокаут, вложенный foreach
Пусть у меня есть люди с кошками с котятами
class Master
{
String masterName;
Cat[] cats;
}
class Cat
{
String catName;
Kitten[] kittens;
}
class Kitten
{
String kittenName;
}
Теперь я хочу показать всех своих котят с кошками с мастерами в html. Я использую
<!-- ko foreach: humans -->
<!-- ko foreach: cats -->
<!-- ko foreach: kittens -->
<p data-bind="$data.kittenName"></p>
<p data-bind="$parent.catName"></p>
<p data-bind="???????"></p> <!-- How get master name? -->
<!-- /ko -->
<!-- /ko -->
<!-- /ko -->
Ответы
Ответ 1
Из документация нокаута
$родители Это массив, представляющий все модели родительского представления:
$parents [0] - это модель представления из родительского контекста (т.е. ее то же, что и $parent)
$parents [1] - это модель представления из контекста бабушки и дедушки.
Вы можете использовать $parents[1]
для доступа к модели просмотра Master.
Ответ 2
Вы можете использовать $root
для доступа к базовому объекту - который в вашем случае будет находиться на уровне Master
.
<!-- ko foreach: humans -->
<!-- ko foreach: cats -->
<!-- ko foreach: kittens -->
<p data-bind="$data.kittenName"></p>
<p data-bind="$parent.catName"></p>
<p data-bind="text:console.log($root, $parent, $data)"></p> <!-- How get master name? -->
<!-- /ko -->
<!-- /ko -->
<!-- /ko -->