Параметры вложенных тегов 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>

comment-list.tag инициализируется с level = 0. Предполагается, что это значение уровня передается в comment.tag. Проблема в том, что когда я пытаюсь получить доступ к opts.level в comment.tag, я получаю 'undefined'. То же самое касается ctype. тип всегда "child", как будто opts.level в comment-list.tag не определен.

PS: Я не думаю, что это может быть связано с тем, что 0 в списке комментариев считается нулевым или "неопределенным", так как у меня такое же поведение со значением 1, например. Я что-то неправильно делаю, передавая значение прямо из объекта opts?

1 ответ

Решение

Каждый из них создает дочернюю область, поэтому вам нужно посмотреть на родителя.

+ Изменить {opts.level} в {parent.opts.level}

Так что ваши <comment-list> ваша текущая сфера, и ваша each={com in comments} создает дочернюю область. Ваш opts.level принадлежит текущему / родительскому объекту, а не отдельной области, которая была повторена.

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

Вот проблема GitHub, которую я поднял ранее в этом году для этого точного вопроса.

Другие вопросы по тегам