2016-05-12 14 views
0

Mein Objekt sieht wie folgt aus:Maximale Größe des Anrufspeichers überschritten. rekursive Tags

<app> 
    <child opts="{ json }"></child> 
    <script> 
    this.json = [ 
     { 
     text: 'parent', 
     child: [ 
      { 
      text: 'child1', 
      child: { 
       text: 'child2' 
      } 
      } 
     ] 
     } 
    ]; 
    </script> 
</app> 

Jedes Kind seine eigenen Kinder haben. Also brauche ich Rekursionstag hier. Es ist was ich habe:

<child> 
<h1>child: { opts.opts.text }</h1> 
<div if={opts.opts.child}> 
    <child opts={opts.opts.child}></child> 
</div> 
</child> 

Ich bekomme Maximum call stack size exceeded. Ich lese, dass in einem Riot js Rekursion Tags ein Problem ist, aber keine Lösung gefunden hat, oder dass es nicht sein kann.

+0

Könnten Sie den Code hinzufügen für "Kind" -Tag? Oder wenn es das ist, dann zeige, wie du es benutzt. – Heikki

+0

für jetzt das ist alles. Ich möchte rekursiv hier verwenden, weil ich nicht wissen kann, wieviele nistende Kinder ich haben werde. – Michal

+0

Ich muss raten, weil Ihr Beispiel nicht vollständig ist. Ist das was du hast? -> http://plinkr.co/edit/07au1eYZOSjU1vldColC?p=preview – Heikki

Antwort

0

Ich habe hier @ Heikkis Beispiel erweitert: http://plnkr.co/edit/12AyPoahb9vGOvx06qqv?p=preview

Die Daten, die ein wenig anders strukturiert:

this.json = { 
    text: 'parent', 
    children: [ 
    { 
     text: 'child1', 
     children: [{ 
     text: 'child2', 
     children: [ 
      {text: 'Inner', children: [ 
      { 
       text: 'Inner inner', 
       children: [] 
      }, 
      { 
       text: 'Inner inner 2', 
       children: [] 
      } 
      ]} 
     ] 
     }] 
    } 
    ] 
}; 

Mit dem aktualisierten Kind tag:

<child> 
    <h1>Text: { this.opts.data.text }</h1> 
    <virtual each={ child in this.opts.data.children }> 
    <child data="{ child }"></child> 
    </virtual> 
</child> 
Verwandte Themen