2016-09-14 2 views
1

ich ein Problem habe, wenn Ausbeute unter Verwendung und Tag-Aktualisierung in, Beispiel http://codepen.io/Pysta/pen/pEyoBYRiotJS Tag innerhalb Ausbeute nicht aktualisiert

<script type="riot/tag"> 
    <maintag> 

    <yieldtag name='yield_tag'> 
     <select> 
     <option each={ items }>{ value }</option> 
     </select> 

    </yieldtag> 


    var self = this; 
    self.items = [ 
     {value:1}, 
     {value:2}, 
      {value:3}, 
     {value:4} 
    ]; 
     self.items = []; 

    this.on('mount', function() { 
     var oReq = new XMLHttpRequest(); 
     oReq.addEventListener("load", reqListener); 
     oReq.open("GET", "/api/category/0"); 
     oReq.send(); 
    }); 

    function reqListener(e) { 
     console.log('load'); 
     self.items = [ 
     {value:1}, 
     {value:2}, 
      {value:3}, 
     {value:4} 
     ]; 
     self.update(); 
    } 

    </maintag> 
</script> 


<script type="riot/tag"> 
    <yieldtag> 
    <yield /> 
    </yieldtag> 
</script> 

<maintag></maintag> 

sehen Wenn ich Daten geladen werden sofort (Kommentarzeile mit „self.items = [];“) es funktioniert wie es soll, aber wenn ich eine Anfrage mache und es asynchron aktualisiere ändert sich nichts.

Wenn ich Yieldtag von innerhalb des MainTag entfernen, funktioniert es.

Jede Hilfe/Vorschläge geschätzt.

Antwort

0

Wenn Sie each={ items } ändern each={ parent.items } es wird als

Die Verwirrung mit <yield /> ist erwartet funktionieren, dass Sie Ihre Template-Logik in der <maintag> schreiben, aber sobald die Komponenten montiert sind, wird der Code ausgeführt wird tatsächlich in <yieldtag> . Das Array items existiert im Zusammenhang mit dem <maintag>, das nach der Montage <yieldtag> ist.

Weitere Informationen zum Verschachteln von Tags finden Sie unter Riot docs

Verwandte Themen