Vue.js Vuetify数据表在单选模式下,选择一行将选择所有其他行

Vue.js Vuetify数据表在单选模式下,选择一行将选择所有其他行,vue.js,select,datatable,vuetify.js,Vue.js,Select,Datatable,Vuetify.js,我试图在表中选择一行并发出所选项目 选择一个将选择所有对象,但仅会将第一个遇到的对象保存到模型中(作为selectedvariable) 你知道我做错了什么吗 {{item.name} 导出默认值{ 名称:“变量选择器”, 道具:[“变量”、“映射”、“索引”], 数据(){ 返回{ 搜索:“, 选定:{}, 加载:false, 项目:[], 标题:[{text:“Variable name”,value:“name”,sortable:true}] }; }, 方法:{ 已选择项目(选择)

我试图在表中选择一行并发出所选项目

选择一个将选择所有对象,但仅会将第一个遇到的对象保存到模型中(作为
selected
variable)

你知道我做错了什么吗


{{item.name}
导出默认值{
名称:“变量选择器”,
道具:[“变量”、“映射”、“索引”],
数据(){
返回{
搜索:“,
选定:{},
加载:false,
项目:[],
标题:[{text:“Variable name”,value:“name”,sortable:true}]
};
},
方法:{
已选择项目(选择){
if(selection.value){
this.$emit(“selected”,selection.item);//它总是发出var_2对象
}否则{
此值为。$emit(“选定”,空);
}
},
updateItemsList(变量){
this.items=Array.from(变量);
}
},
安装的(){
this.updateItemsList(this.variables);
},
观察:{
变量(newValue){
这是。加载=真;
this.updateItemsList(newValue);
这一点:加载=错误;
}
}
};
从中的示例中,我可以看到以下内容:

1.
所选
应为数组,而不是对象

“选定”保存所有选定的值<代码>单选属性仅确定长度是否可以大于1

2.)如果您使用
v-model
,则不应使用
@item selected=“itemSelected”

v-model
已经是双向绑定。但您会触发一个额外的事件,并使用
对象
null

解决方案

选中
作为一个数组并删除
@item selected=“itemSelected”


{{item.name}
导出默认值{
名称:“变量选择器”,
道具:[“变量”、“映射”、“索引”],
数据(){
返回{
搜索:“,
选定:[],
加载:false,
项目:[],
标题:[{text:“Variable name”,value:“name”,sortable:true}]
};
},
方法:{
updateItemsList(变量){
this.items=Array.from(变量);
}
},
安装的(){
this.updateItemsList(this.variables);
},
观察:{
变量(newValue){
这是。加载=真;
this.updateItemsList(newValue);
这一点:加载=错误;
}
}
};

我遇到了这个问题,我的
项key=“value”
与标题中的任何值都不匹配。选择一个标题值,它应该可以工作。

每个对象都应该是唯一的键值。如果您遇到错误,您希望手动告诉每个对象都是唯一的

加上

item-key="table_header_index"//or name 
例如:


后面的数据应该有主键。如果这样做了,你的桌子就明白了;若您的数据并没有主键,那个么应该为表写入项键


祝你好运

我忘了这条线。。。该问题的解决方案是将参数
selectable key=“name”
item key=“name”
添加到
v-data-table
,并默认为“id”。“我的项目”没有这样的字段,必须指明检查的内容。请创建答案,而不是将解决方案公告编辑到问题中。或者用旁边的记号接受最好的一个。
item-key="table_header_index"//or name 
<v-data-table
    :headers="headers"
    :items="items"
    show-select
    item-key="table_header_index"  <-------------------add this line
>

</v-data-table>