Параметры вложенных тегов 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, которую я поднял ранее в этом году для этого точного вопроса.