关于直接赋值对象导致响应式丢失

1.问题复现如下:

 <el-select v-model="item.question_type" placeholder="请选择" @change="txChangeFn(index,item.question_type)">
                                        <el-option
                                            v-for="item in txList"
                                            :key="item.value"
                                            :label="item.label"
                                            :value="item.value">
                                        </el-option>
                                    </el-select>
//题型变更
        txChangeFn(index,params){
            this.wenjuan.wtlist[index].question_type=params
            if(this.wenjuan.wtlist[index].question_type=='dan'){
                this.wenjuan.wtlist[index]={
                    "question_text": "", //问题
                    "question_type": "dan", // 'dan'单选, 'duo'多选, 'text'文本
                    "required": "Y", // 是否必答
                    "xxlist": [
                            {
                                option_text: ""
                            },
                            {
                                option_text: ""
                            },
                            {
                                option_text: ""
                            },
                            {
                                option_text: ""
                            }
                    ] //选项list 对于文本题,此数组可以为空或省略
                }
            }else if(this.wenjuan.wtlist[index].question_type=='duo'){
                this.wenjuan.wtlist[index]={
                    "question_text": "", //问题
                    "question_type": "duo", // 'dan'单选, 'duo'多选, 'text'文本
                    "required": "Y", // 是否必答
                    "xxlist": [
                            {
                                "option_text": ""
                            },
                            {
                                "option_text": ""
                            },
                            {
                                "option_text": ""
                            },
                            {
                                "option_text": ""
                            }
                    ]
                }
            }else if(this.wenjuan.wtlist[index].question_type=='text'){
                this.wenjuan.wtlist[index]={
                    "question_text": "",
                    "question_type": "text",
                    "required": "Y",
                    // 无选项
                }
            }
        }

问题出现:在<el-select>组件中使用@change事件只触发了一次,可能是因为在选择项变化后,v-model的值没有发生实际变化,导致@change事件没有再次触发。

解决办法:检查一下在txChangeFn(index, item.question_type)方法中是否有修改item.question_type的逻辑,确保每次选择项变化后v-model的值都有实际变化。另外,还可以尝试在txChangeFn方法中手动将item.question_type设置为一个新的值,以确保@change事件能够再次触发。

2.修改后的值

txChangeFn(index, params) {
    this.wenjuan.wtlist[index].question_type = params;
    if (params === 'dan') {
        this.wenjuan.wtlist[index].xxlist = [
            { option_text: "" },
            { option_text: "" },
            { option_text: "" },
            { option_text: "" }
        ];
    } else if (params === 'duo') {
        this.wenjuan.wtlist[index].xxlist = [
            { option_text: "" },
            { option_text: "" },
            { option_text: "" },
            { option_text: "" }
        ];
    } else if (params === 'text') {
        // 无需修改xxlist
    }
}

修改this.wenjuan.wtlist[index].question_type后,直接修改该对象的属性而不是重新赋值整个对象,既可以不影响响应式。

相关推荐

  1. 关于直接赋值对象导致响应丢失

    2024-03-21 15:34:05       21 阅读
  2. 直接赋值导致响应断开,前端深浅拷贝

    2024-03-21 15:34:05       8 阅读
  3. vue2对象丢失响应解决办法

    2024-03-21 15:34:05       39 阅读
  4. 恢复因服务器突然关机导致的innodb数据丢失

    2024-03-21 15:34:05       36 阅读
  5. 关于vue3中响应依赖注入provide/inject

    2024-03-21 15:34:05       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-21 15:34:05       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-21 15:34:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-21 15:34:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-21 15:34:05       20 阅读

热门阅读

  1. nginx配置详解+nginx_lua模块的使用

    2024-03-21 15:34:05       19 阅读
  2. AI程序员对程序员的影响

    2024-03-21 15:34:05       20 阅读
  3. Python实现2024春晚刘谦魔术

    2024-03-21 15:34:05       24 阅读
  4. GraphQL入门之查询指令Directive

    2024-03-21 15:34:05       20 阅读
  5. Linux 常用命令速查

    2024-03-21 15:34:05       20 阅读