2016-10-28 11 views
0

私はriotjsライブラリを使用しており、2つのタグ "comment-list"と "comment"を持っています。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のレベルで初期化されます.tag。問題は、opts.levelcomment.tagにアクセスしようとすると「未定義」になります。 ctypeも同じです。 タイプは、のopts.levelがcomment-list.tagが定義されていないかのように、常に「子」です。

Ps:値1の場合と同じ動作をするため、comment-listの値がnullまたは 'undefined'とみなされているとは思わない 値をそのまま渡すのは間違っていますかoptsオブジェクトから?

+0

私はあなたが達成しようとしていることを正確には知らないが、いくつかのヒント。 タグを正しくマウントします。この場合、いくつかの初期値を追加しました。 'riot.mount( 'comment-list'、{レベル:0、コメント:[{レベル:0}、{レベル: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の問題があります。

関連する問題