如何在 vuetify 中显示树视图组件

Posted

技术标签:

【中文标题】如何在 vuetify 中显示树视图组件【英文标题】:How to display treeview component in vuetify [closed] 【发布时间】:2021-01-01 15:39:52 【问题描述】:

有人可以帮我在 vuetify 中渲染树视图吗 我有这样的回应 在这种情况下,我使用了 vuetify 框架

[
  
    "id": 4,
    "name": "Test",
    "parent_id": 0,
    "image": "gVtHmE4tN18Y.png",
    "children": [
      
        "id": 6,
        "name": "Test2",
        "parent_id": 4,
        "image": "XBpqGq6CinOm.png",
        "parent": [
          
            "id": 7,
            "name": "Test3",
            "parent_id": 6,
            "image": "MNI3TmNXI1V5.png",
          
        ]
      
    ]
  
]

我不知道如何在树视图中显示此响应 我尝试使用许多解决方案,但我没有任何结果 这是我发现的 如果有人知道如何做到这一点,那就太好了 感谢帮助

【问题讨论】:

只显示Test?没有办法扩展树? 你应该在这里阅读 v-for vuejs.org/v2/guide/list.html 【参考方案1】:

<v-treeview/> 默认加载'children' 属性(如果有)。但是,在您的示例中,我们可以看到在第一个孩子身上,它没有“孩子”属性。但是存在“父”属性,您也想将其视为子属性。

解决方案:您可以创建一个遍历所有节点的计算变量,检查它是否具有“父”属性,并添加与“父”属性具有相同值的“子”属性。 (我将使用这个解决方案 here 来遍历项目)。

<v-treeview :items="modifiedItems"/>
data: () => (
  items: [...]
),

computed: 
  modfiedItems() 
    // let's clone the items so we won't pollute the original data.
    const clonedItems = JSON.parse(JSON.stringify(this.items));
    this.traverse(clonedItems);
    return clonedItems;
  
,
methods: 
  // reference: https://***.com/a/722676/9183405
  traverse(items) 
    // check if the node is an object or array
    if (items !== null && typeof items === "object") 
      Object.entries(items).forEach(([key, value]) => 
        // check if the item/node has a 'parent' property
        if (key === "parent") 
          items.children = value; 
        
        this.traverse(value);
      );
    
  

所以现在,如果一个节点/项目有一个“子”或“父”属性,它仍然会被加载到树视图上。如果两个属性都存在,则使用“children”。

这是一个示例代码demo。

【讨论】:

不客气。祝你好运!

以上是关于如何在 vuetify 中显示树视图组件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Vuetify 网格系统循环显示卡片组件?

如何删除 vuetify 自动完成组件默认图标

Vuetify css override 改变组件的视图

Vuetify和require.js:如何显示动态组件?

如何在 vuetify 文本字段中使用掩码?

如何在 Laravel 的其他 Vue/Vuetify 组件中嵌入 Vue/Vuetify 组件?