首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认-展开-所有不工作的Q-树?Vue.Js

默认-展开-所有不工作的Q-树?Vue.Js
EN

Stack Overflow用户
提问于 2019-05-14 07:49:52
回答 3查看 1.5K关注 0票数 1

我必须编写一个web应用程序,最重要的元素是Q树。我已经能够加载和显示数据(传递一个名为list的数组),但我希望扩展所有节点。

官方文档的vue.js示例表明,您可以使用“默认-展开-所有”属性来完成这一任务,但这对我来说并不适用。

它只显示带有箭头的根节点,其中必须手动展开子节点。

代码语言:javascript
复制
    <q-tree
     :nodes="list"
     :selected.sync="selected"
     @update:selected="onSelectionChangedNode"
     node-key="NodeNr"
     label-key="NodeTxt"
     default-expand-all
    ></q-tree>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-15 08:41:30

解决了我的问题如下:

我向QTree DOM元素添加了ref属性,这使得访问QTree API的预定义方法成为可能。

代码语言:javascript
复制
      <q-tree
        :nodes="list"
        :selected.sync="selected"
        @update:selected="onSelectionChangedNode"
        node-key="NodeNr"
        label-key="NodeTxt"
        **ref="nodes"**
      >

我一直使用的函数是expandAll()。

代码语言:javascript
复制
updated() {
      this.$refs.nodes.expandAll();
}

对我来说最重要的是,我必须找出哪个生命周期挂钩对我来说是正确的。update()钩子是我要找的那个。

原因:在数据更改之后调用将导致虚拟DOM被重新呈现和修补。当调用这个钩子时,组件的DOM将被更新,因此您可以在这里执行依赖于DOM的操作。

票数 2
EN

Stack Overflow用户

发布于 2019-09-20 17:29:08

从接受的答案中得到一个提示,我意识到dom已经在第一次呈现时用树组件创建了。

在我的用例中,当数据从服务器返回时,我想更新树。因此,我不得不强制它使用expanded功能重新呈现,使用:

代码语言:javascript
复制
this.$nextTick(function () {
              this.$refs.nodes.expandAll();
            })

nextTick函数将在下一个执行窗口中更新dom,此时节点将通过调用expandAll函数进行扩展。

注意:对于那些被ref属性上的星号或如何将其添加到组件中的人来说,这里是这样的:

代码语言:javascript
复制
<q-tree :nodes="list"
        :selected.sync="selected"
        @update:selected="onSelectionChangedNode"
        node-key="NodeNr"
        label-key="NodeTxt"
        ref="nodes"
      >
票数 2
EN

Stack Overflow用户

发布于 2019-05-14 12:28:34

默认的-展开-所有只应用于该组件的第一个呈现。因此,如果您的组件在节点未分配时呈现,则如果随后分配,它们将不会展开。

https://v1.quasar-framework.org/vue-components/tree

如果在第一次呈现时没有节点,则必须使用范围为范围的槽和扩展的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56125406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档