2013-06-12 3 views
68

簡潔

用に更新するにはどうすればバインディングを持つネストされたノックアウトの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 --> 

オリジナル

紛らわしい質問には申し訳ありませんが、私は(下記のように)現在のコンテキスト内の値に対してチェックするために、第2レベルの親の値に到達しようとしていますへ$親の$親の値と一致する場合のみスパンを表示します(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 --> 

これは簡単に実行できますAYしかし、私はこれを読んだことは可能ではないか、私はそれが間違ってやっている:)

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

から任意の助けいただければ幸いです。

+0

として多くの有用な性質を与える私が働いていないものを、あなたの質問を理解していませんか?あなたの問題は何ですか: '$ parent。$ parent'の構文か、' foreach'と 'if'をマージできないので' span'を使わなければなりませんか? – nemesv

答えて

118

$parentsアレイを使用すると、祖父母は$parents[1]になります。あなたの例のgrandParentオブジェクトが最上位の親である場合は、$rootを使用することもできます。 docsから

$両親が

これは、親ビューモデルのすべて表す配列である:

$両親を[0]親からのビューモデルでありますコンテキスト(つまり、$ parentと同じ です)

$ parents [1]は祖父からのビューモデルですコンテキスト

$両親は[2]ように偉大な、祖父母のコンテキスト

からビューモデルである...とアレント。

これは、ルートコンテキスト内のメインビューモデルオブジェクト、すなわち、 最上位の親コンテキストである$ルート。これは通常、 ko.applyBindingsに渡されたオブジェクトです。これは$ parents [$ parents.length - 1]に相当します。

+0

何らかの理由で、 '$ parent。$ parent'は私にとってはうまくいきませんでしたが、このソリューションはうまくいきました。 – PeterM

3

$parentContext.$parentを使用できます。

$parentContextは、($data$parent$index、...)