2012-07-30 17 views
11

Powiedzmy mam Humans z kotami z kociątnokaut, zagnieżdżonych foreach

class Master 
{ 
    String masterName; 

    Cat[] cats; 
} 
class Cat 
{ 
    String catName; 

    Kitten[] kittens; 
} 

class Kitten 
{ 
    String kittenName; 
} 

Teraz chcę pokazać wszystkie moje Kociaki z kotami z Masters w html. Używam

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

Odpowiedz

20

Z knockout documentation

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

$ rodzice [0] jest model widok z kontekstu macierzystego (tj , jest taki sam jak $ parent)

$ rodzice [1] to model widoku z kontekstu dla dziadków

Powinieneś być w stanie użyć $parents[1], aby uzyskać dostęp do Master viewmodel.

8

Można użyć, $root dostać się do obiektu podstawowego - co w Twoim przypadku będzie na poziomie 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 --> 
+0

Główny nie jest tutaj root ... Tablica Mistrzów jest częścią innego obiektu – Ilya

+0

No cóż, '$ root' przeniesie Cię na najwyższy możliwy poziom. Następnie możesz przejść stamtąd –

+0

@Ilaa - wystarczy log konsoli, aby sprawdzić, jaki poziom chcesz uzyskać. –

Powiązane problemy