2012-07-30 16 views
11

di Ho Gli esseri umani con gatti con Gattiniknockout, foreach nidificato

class Master 
{ 
    String masterName; 

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

    Kitten[] kittens; 
} 

class Kitten 
{ 
    String kittenName; 
} 

Ora voglio mostrare tutti i miei gattini con i gatti, con Master in html Let. Io uso

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

risposta

20

Dalle knockout documentation

$ genitori Questo è un array che rappresenta tutti i modelli di vista padre:

$ genitori [0] è il modello vista dal contesto genitore (cioè , è uguale a $ parent)

$ genitori [1] è il modello di visualizzazione dal contesto dei nonni

Dovresti essere in grado di utilizzare $parents[1] per accedere al modello di vista Master.

8

È possibile utilizzare, $root per raggiungere l'oggetto di base - che nel tuo caso sarà a livello di 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

Il master non è root qui ... Array of Masters fa parte di un altro oggetto – Ilya

+0

Bene, '$ root' ti porterà al livello più alto possibile. È quindi possibile attraversare in giù da lì –

+0

@Ilya - solo il log della console per vedere quale livello è che si desidera –