2016-10-28 54 views
0

我正在使用riotjs库,并有两个标签“评论列表”和“评论”。Riotjs嵌套标签选项未定义

注释列表:

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

评论-list.tag与初始化= 0的假定到这个水平值传递给评论水平。标签。问题是当我尝试访问opts.levelcomment.tag,我得到'未定义'。 ctype也一样。 类型永远是“孩子”,好像opts.level在comment-list.tag未定义。

Ps:我不认为这可能是由于0评论列表被视为空或'未定义',因为我有相同的行为值为1例如 我是否有错误传递值直从opts对象?

+0

我不知道你想要完成什么,但有一些技巧。 正确安装标签,在这种情况下,我添加了一些初始值 'riot.mount('comment-list',{level:0,comments:[{level:0},{level:1}]})' 在你的第一个问题中,你是否试图从opts父母或者你正在迭代的孩子中访问关卡?在每个你在子上下文中,所以如果你想要父母你必须做parent.opts.level。这是一个简化的例子http://plnkr.co/edit/7znf8HJh1wnpX9bjrxIX?p=preview – vitomd

回答

0

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

变化{opts.level}{parent.opts.level}

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

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

这里是GitHub的问题,我在今年年初提出了这个确切的问题。