Knockout,嵌套的foreach

17

假设我有人类、猫和小猫

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's name? -->
                    <!-- /ko -->
                    <!-- /ko -->
                    <!-- /ko -->
2个回答

26

来自Knockout文档

$parents 这是一个数组,表示所有父级视图模型:

$parents[0] 是上一级上下文的视图模型(即与 $parent 相同)

$parents[1] 是曾祖父级上下文的视图模型

您可以使用$parents[1]来访问主视图模型。


13
你可以使用$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's name? -->
        <!-- /ko -->
    <!-- /ko -->
<!-- /ko -->

这里的 Master 不是 root... Masters 数组是另一个对象的一部分。 - Ilya
好的,$root会让你到达最高可能级别。然后你就可以从那里向下遍历。 - Jibi Abraham
@Ilya - 只需使用控制台日志记录以查看您想要的级别是什么。 - Jibi Abraham
我无法使用$root、$parent或$data获取主名称。还有其他方法吗? - Ilya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接