javascript - Yield 内的 RiotJS 标签未更新

标签 javascript riot.js

我在使用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,它就会起作用。

任何帮助/建议表示赞赏。

最佳答案

如果你改变each={ items }each={ parent.items }它将按预期工作

<yield /> 的混淆是你在 <maintag> 中编写模板逻辑,但是一旦安装了组件,您的代码实际上就在 <yieldtag> 中运行。 items数组存在于 <maintag> 的上下文中,即<yieldtag>挂载后的父级。

有关嵌套标签的更多信息,请参阅 Riot docs

关于javascript - Yield 内的 RiotJS 标签未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39489440/

相关文章:

Javascript,字符串插值函数名称

riot.js - 如何在 riot 标签中包含外部 css 和 javascript?

javascript - 使用 Riotjs Webpack Starterkit 构建时 Riot.js 错误

javascript - Riot.mount(*) 没有任何效果

javascript - Node JS 判断字符串中的某个单词是否在数组中

javascript - 对一个数组中的所有相同元素求和

javascript - jQuery,下一个,上一个,循环到第一个和最后一个

javascript - IE11 中 javascript 中的 createRange() 方法问题

javascript - 我们如何检测 Riot.js 中循环/渲染的结束?

javascript - 防暴.js : add tag dynamically and mount it