【发布时间】:2019-07-10 04:40:18
【问题描述】:
【问题讨论】:
-
问题在于@update:active事件只传递了被点击节点的KEY,没有传递相对对象
-
请参阅文档中的
return-object属性以更改此行为
标签: vue.js vuetify.js
【问题讨论】:
return-object 属性以更改此行为
标签: vue.js vuetify.js
Vuetify 的 Treeview 组件提供了一个作用域插槽 label,您可以使用它来更改为每个节点显示的内容。例如,要打开一个对话框,您可以执行以下操作:
<v-treeview
v-model="tree"
:items="items"
activatable
item-key="name">
<template slot="label" slot-scope="{ item }">
<a @click="openDialog(item)">{{ item.name }}</a>
</template>
</v-treeview>
然后您可以使用dialog 组件并使用 openDialog 方法打开它/更改其内容
【讨论】:
<v-treeview
v-model="tree"
:items="items"
:active="active"
activatable
open-on-click
@update:active="test"
>
methods: {
test() {console.log('TEST', this.active)},
【讨论】:
你有两个事件:
第一个是update:open,当您单击具有子节点且其处理程序将打开的节点作为参数的节点时触发:
@update:open="openNode"
在方法中:
methods:{
openNode(node){
//
}
}
第二个是update:active,当您单击没有子节点的叶子并且其处理程序将单击的节点作为参数时触发:
@update:active="clickOnNode"
在方法中:
methods:{
clickOnNode(node){
//
}
}
要获取带有字段的节点,您应该添加 prop return-object :
<treeview return-object @update:active="clickOnNode" ...
【讨论】:
@anthonio-achiduzu,至少对于Vuetify 2.3.3版本,@update:active在this.active被改变之前被触发,所以test()会在上面的代码中输出一个空数组。
【讨论】:
有了 Vuetify 2.3.5,我用这个没问题
<v-treeview return-object item-key="id" hoverable activatable selected-color="red"
@update:active="updateForm" color="warning" :items="categories">
</v-treeview>
<template slot-scope="{ item }">
<a @click="updateForm(item)">{{ item.name }}</a>
</template>
在方法中,我编写函数 updateForm(但这是测试值的控制台):
updateForm(item)
{
if(item.length>0)
console.log(item[0].name)
}
【讨论】: