我有一个包含复选框列表的键->值对的数组。它们呈现得很好,但是当你点击它们时什么也不会发生,除非我改变了一个文本输入,然后这些复选框被重新呈现为新的值(我之前点击的那个)。
复选框:
<el-col :span="24">
<el-form-item class="permission-item" :span="24" :key="perm.name" v-for="perm in permissions" :label="perm.name">
<el-switch v-model="role_permissions[perm.name]" />
</el-form-item>
</el-col>其他元素,如果我更新,复选框也会更新:
<el-col :span="8">
<el-row>
<el-col :span="24">
<el-form-item label="Role Name" prop="name">
<el-input v-model="role.name"/>
</el-form-item>
</el-col>
</el-row>
</el-col>组件:
export default {
data() {
return {
role: this.role,
permissions: [],
role_permissions: {}
};
},
methods: {
getRole: async function(){
//Inside axios ajax
this.role = response.data.role;
},
getPermissions: async function(){
//Inside axios ajax
this.permissions = response.data.permissions;
//Init the array with the values
for(var i = 0; i < this.permissions.length; i++){
this.role_permissions[this.permissions[i].name] = this.hasPerm(this.permissions[i].name);
}
},
hasPerm(name){
for(var i = 0; i < this.role.permissions.length; i++){
if(name === this.role.permissions[i].name){
return true;
}
}
return false;
}
},
mounted() {
this.getRole();
this.getPermissions();
},
}有人能告诉我为什么会发生这种情况吗?
发布于 2020-09-15 00:51:20
在查看了几天的反应性问题后,修复结果如下:
改变这一点
role_permissions: {}要这样做:
role_permissions: []然后,这不起作用的关键部分是在数组的初始化中。这发生在getPermissions()中,下面是我所做的:
更改了此设置:
for(var i = 0; i < this.permissions.length; i++){
this.role_permissions[this.permissions[i].name] = this.hasPerm(this.permissions[i].name);
} 要这样做:
for(var i = 0; i < this.permissions.length; i++){
this.$set(this.role_permissions, this.permissions[i].name, this.hasPerm(this.permissions[i].name));
}使用"$set“进行赋值,而不是使用"=”。
发布于 2020-09-10 23:19:24
在switch标记中同时使用v-model和bind:value
https://stackoverflow.com/questions/63832271
复制相似问题