У меня есть мифрил ListWidget
, который отображает список Items
. Значок, который вы видите справа, позволяет развернуть и свернуть детали. Это поле «развернуто» в каждом состоянии Item vnode
.
Теперь я хочу свернуть остальные дочерние элементы, когда расширенные дочерние элементы, поэтому отображается только один расширенный дочерний элемент.
![enter image description here](https://i.stack.imgur.com/hd0WR.png)
Итак, ListWidget
добавляет функцию "requestCChildrenCollapse
" к атрибутам каждого Item
дочернего элемента. Теперь, когда вы нажимаете одну кнопку расширения дочерних элементов, эта функция вызывается, чтобы свернуть все дочерние элементы перед ее развертыванием.
Моя проблема в том, что я не знаю, как получить доступ к ListItems
vnodes
из List
контекст. vnode.children
пусто. vnode.instance.children
содержат детей, но в документах говорится, что это частный член и не должен использоваться. Кроме того, они "полностраничные" дети.
Итак, как лучше всего выполнить 1032 * это?
ListWidget
ListWidget = () => {
view: (vnode) => m(".fullpage",
[
m("div.flexrow", [
m(
"ul.listitems",
Object.keys(ListItem.get()).map(id => m(ListItem, {
id,
collapseChildrenRequest: () => {
for (const child of vnode.children) console.log(child);
}
}
)
])
]
)
};
Дети на клике:
onclick: () => {
vnodeView.attrs.collapseChildrenRequest();
vnodeView.state.isExpanded = !vnodeView.state.isExpanded;
},