我正在使用riotjs库并有两个标签“comment-list”和“comment”。
评论列表:
<comment-list>
<div each={com in comments} >
<comment level={opts.level} comment={com} type={opts.level == 0 ? "parent" : "child"} ctype={commentType}></comment>
</div>
<div show={opts.level == 0}>
<a id="load-trigger" onclick={fetchMore}>Moar comments</a>
</div>
var self = this;
self.commentType = (self.opts.level === 0 ? "parent" : "child");
</comment-list>
并发表评论:
<comment>
... some html ...
<div class="row" if={opts.level == 0}>
<div class="col s11 offset-s1 m11 offset-m1 l11 offset-l1" style="padding-left: 0;">
<comment-list level={1} fetchMore={fetchMore}></comment-list>
</div>
</div>
</comment>
comment-list.tag 初始化为level = 0.应该将此级别值传递给 comment.tag 。问题是当我尝试访问 comment.tag 中的 opts.level 时,我得到'undefined'。 ctype 也是如此。 type 始终为“child”,就好像未定义 comment-list.tag 中的opts.level一样。
Ps:我认为这可能不是因为评论列表中的0被视为空或'未定义',因为我与值1具有相同的行为,例如 从opts对象直接传递值是否有问题?
答案 0 :(得分:0)
每个都创建一个子范围,因此您需要查看父级。
将{opts.level}
更改为{parent.opts.level}
因此,您的<comment-list>
是您当前的范围,而您的each={com in comments}
会创建子范围。您的opts.level
属于当前/父级,而不属于已迭代的单个范围。
https://github.com/riot/riot/issues/1720
这是我今年早些时候针对这个问题提出的github问题。