淘汰赛,嵌套的foreach

时间:2012-07-30 12:10:38

标签: javascript knockout.js

让我和人类一起养猫与小猫

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 个答案:

答案 0 :(得分:23)

来自knockout documentation

  

$父母   这是一个表示所有父视图模型的数组:

     

$ parents [0]是来自父上下文的视图模型(即,它与$ parent相同)

     

$ parents [1]是来自祖父母背景的视图模型

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

答案 1 :(得分:9)

您可以使用$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 -->