默认情况下,展开所有对象';q-tree不工作?Vue.Js
我必须编写一个web应用程序,最重要的元素是q树。我已经能够加载和显示数据(传递一个名为list的数组),但我希望所有节点都展开 官方文档的vue.js示例表明,您可以使用“default expand all”属性来完成此操作,但这对我来说不起作用 它只显示带有箭头的根节点,在这里我必须手动展开子节点默认情况下,展开所有对象';q-tree不工作?Vue.Js,vue.js,nodes,Vue.js,Nodes,我必须编写一个web应用程序,最重要的元素是q树。我已经能够加载和显示数据(传递一个名为list的数组),但我希望所有节点都展开 官方文档的vue.js示例表明,您可以使用“default expand all”属性来完成此操作,但这对我来说不起作用 它只显示带有箭头的根节点,在这里我必须手动展开子节点 <q-tree :nodes="list" :selected.sync="selected" @update:selected="onSelecti
<q-tree
:nodes="list"
:selected.sync="selected"
@update:selected="onSelectionChangedNode"
node-key="NodeNr"
label-key="NodeTxt"
default-expand-all
></q-tree>
默认的“全部展开”仅应用于该组件的第一次渲染。 因此,如果您的组件在未指定节点时进行渲染,那么如果随后指定,它们将不会展开
如果第一次渲染时没有节点,则必须使用作用域插槽和扩展属性。解决了我的问题,如下所示: 我已经向qtreedom元素添加了ref属性,这使得访问qtreeapi的预定义方法成为可能
<q-tree
:nodes="list"
:selected.sync="selected"
@update:selected="onSelectionChangedNode"
node-key="NodeNr"
label-key="NodeTxt"
**ref="nodes"**
>
对我来说最重要的是,我必须找出哪个生命周期钩子适合我。update()钩子就是我要找的那个
原因是:
在数据更改后调用会导致重新呈现虚拟DOM并
打补丁
调用此钩子时,组件的DOM将被更新,因此
可以在此处执行依赖于DOM的操作
根据接受的答案,我意识到dom已经在第一次渲染时使用树组件创建 在我的用例中,我希望在数据从服务器返回时更新树。 因此,我不得不使用
扩展的
功能强制它重新渲染,使用:
this.$nextTick(function () {
this.$refs.nodes.expandAll();
})
nextTick函数将在下一个执行窗口中更新dom,此时节点将通过调用expandAll
函数进行扩展
注意:对于那些对ref属性上的星号或如何将其添加到组件感到困惑的人,下面是:
<q-tree :nodes="list"
:selected.sync="selected"
@update:selected="onSelectionChangedNode"
node-key="NodeNr"
label-key="NodeTxt"
ref="nodes"
>
<q-tree :nodes="list"
:selected.sync="selected"
@update:selected="onSelectionChangedNode"
node-key="NodeNr"
label-key="NodeTxt"
ref="nodes"
>