2016-10-28 51 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的問題,我在今年年初提出了這個確切的問題。