1

yield を使用してタグを更新するときに問題が発生しました。例を参照してくださいhttp://codepen.io/Pysta/pen/pEyoBY

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

データをすぐにロードすると (「self.items = [];」のコメント行)、想定どおりに機能しますが、リクエストを作成して非同期に更新しても何も変わりません。

maintag 内から yieldtag を削除すると、機能します。

ヘルプ/提案をいただければ幸いです。

4

1 に答える 1

0

に変更each={ items }するeach={ parent.items }と、期待どおりに動作します

との混乱<yield />は、テンプレート ロジックを で記述していることですが<maintag>、コンポーネントがマウントされると、コードは実際には で実行され<yieldtag>ます。items配列は、マウント後の の親<maintag>であるのコンテキストに存在します。<yieldtag>

タグのネストについて詳しくは、Riot のドキュメントを参照してください。

于 2017-03-24T19:44:36.850 に答える