为对象添加新属性后dom不更新

问题:赋值后页面上下拉list(即config里的属性)无值
(这个dom不更新的问题我看了文档5678遍了,每次遇到都会纠结一番,特此记录一下,纪录一遍就觉得超级简单问题,不记录就是一团乱呼呼的)

		data() {
            return {
                config: {}
            }
        },
         methods: {
            //获取各种下拉列表
             queryConfig() {
                this.$ajax.get('/risk_check/rule/query_config.json').then(o => {
                    if(o.retcode === 0) {
                        this.config.check_state = Object.assign({}, o.result_rows.check_state);
                        this.config.order_state = Object.assign({}, o.result_rows.order_state);
                    }
                });
            },
        }

原因分析见下面vue文档说明:
由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除;因为上代码config中无属性,直接通过this.config.check_state = xxx的方法相当于添加新属性并为其赋值。所以造成了vue检测不到新属性,dom没有更新的情况;
在这里插入图片描述
解决方法:
1.config对属性初始化,这样就不是添加新属性了,,而是为已有属性赋值

		data() {
            return {
                config: {
                    check_state: {},
                    order_state: {}
                }
            }
        },

2.通过vue.set的方法添加新属性

this.$set(this.config, 'check_state', o.result_rows.check_state)

此处选择方法1,因为属性不多,而且正好给了初始值以防接口报错的时候无返回值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值