使用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>
如果我立即加载数据(注释行带有&#34; self.items = [];&#34;)它可以正常工作,但当我发出请求并异步更新时没有什么变化。
如果我从维护内部删除了yieldtag,它就可以了。
任何帮助/建议表示赞赏。
答案 0 :(得分:0)
如果您将each={ parent.items }
更改为<yield />
,它将按预期工作
与<maintag>
的混淆是您在<yieldtag>
中编写模板逻辑,但是一旦安装了组件,您的代码实际上就在items
中运行。 <maintag>
数组存在于<yieldtag>
的上下文中,安装后为 constructor(props){
super(props);
var isActive = false;
this.props.items.map(item => (
if(item.name == this.props.product.name) {
isActive = true;
}
));
this.state = {
active: isActive
};
console.log(isActive);
this.handleClick = this.handleClick.bind(this);
}
的父级。
有关嵌套标记的更多信息,请参阅Riot docs