2013-06-12 6 views
68

Aktualizacja dla zwięzłości

Jak mogę odwołać się do $ rodziców $ rodzica w zagnieżdżonej Knockout foreach/z wiązaniami?

Przykład -

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

Original

Przepraszamy za mylące pytanie, ale próbuję osiągnąć wartość drugiego poziomu rodzica, by sprawdzić na wartości w bieżącym kontekście (jak poniżej) wyświetla tylko span, jeśli pasuje do wartości $ parent rodzica $ (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 --> 

To byłoby łatwiej zrobić to w ale z tego, co przeczytałem, to nie jest możliwe lub robię to źle :)

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

Każda pomoc będzie bardzo ceniona.

+0

Nie rozumiem Twoje pytanie, co nie działa? Jaki jest twój problem: jest składnia '$ parent. $ Parent' lub musisz użyć' span', ponieważ nie możesz scalić 'foreach' i' if'? – nemesv

Odpowiedz

118

Użyj macierzy $parents, która będzie miała numer $parents[1]. Możesz także użyć $root, jeśli obiekt grandParent w twoim przykładzie jest najwyższym obiektem nadrzędnym.

Z docs:

$ rodziców

Jest to tablica reprezentująca wszystkie Zobacz główne modele:

$ rodziców [0] jest model widok z rodzicem kontekst (tzn. jest to taki sam jak $ parent)

$ parents [1] to model widoku od grandpa ARENT kontekst

$ rodzice [2] jest model widok z kontekstu pra-dziadka

... i tak dalej.

$ korzeń

Jest to główny widok model obiektowy w kontekście głównego, tj najwyższy kontekst rodzicem. Zwykle jest to obiekt, który został przekazany do ko.applyBindings. Jest to odpowiednik $ parents [$ parents.length - 1].

+0

Z jakiegoś powodu '$ parent. $ Parent' nie działało dla mnie, to rozwiązanie działało jednak dobrze, a także jest krótsze! – PeterM

3

Można użyć $parentContext.$parent.

$parentContext dostarczyć wiele użytecznych właściwości, takie jak ($data, $parent, $index ...)

Powiązane problemy