Riotjs嵌套标签选项未定义

时间:2016-10-28 13:42:20

标签: javascript riot.js riotjs riot

我正在使用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对象直接传递值是否有问题?

1 个答案:

答案 0 :(得分:0)

每个都创建一个子范围,因此您需要查看父级。

{opts.level}更改为{parent.opts.level}

因此,您的<comment-list>是您当前的范围,而您的each={com in comments}会创建子范围。您的opts.level属于当前/父级,而不属于已迭代的单个范围。

https://github.com/riot/riot/issues/1720

这是我今年早些时候针对这个问题提出的github问题。