【问题标题】:knockout, nested foreach淘汰赛,嵌套的foreach
【发布时间】:2012-07-30 12:10:37
【问题描述】:

让我们有猫和小猫的人类

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

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    来自knockout documentation

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

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

    $parents[1] 是来自祖父母上下文的视图模型

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

    【讨论】:

      【解决方案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's name? -->
              <!-- /ko -->
          <!-- /ko -->
      <!-- /ko -->
      

      【讨论】:

      • Master 不是根目录... Master 数组是另一个对象的一部分
      • 好吧,$root 会让你达到最高水平。然后你可以从那里向下遍历
      • @Ilya - 只需控制台日志即可查看您想要的级别
      • 我无法使用 $root、$parent 或 $data 获取 Master 名称。是另一种方式吗?
      猜你喜欢
      • 2014-12-11
      • 2011-08-11
      • 2013-04-20
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 2015-01-04
      • 1970-01-01
      相关资源
      最近更新 更多