vue 监听不到数据更新

最近在做一个循环渲染多行多选框的页面,使用可element ui  的 checkdebox 组件。一维数组循环的是每一个多选框组,二维循环的是每个多选框组的选项。

<el-row v-for="(item,index) in settingData" :key="index">
      <el-col :span="4">
        <span >{{item.typeName}}:</span>
      </el-col>
      <el-col :span="20">
        <el-checkbox-group v-model="item.selectList">
          <el-checkbox v-for="(optionItem,optionIndex) in item.list"
                       :label="Number(optionItem.value)"
                       :key="optionIndex"
                       :disabled="index===0">{{optionItem.key}}</el-checkbox>
        </el-checkbox-group>
      </el-col>
    </el-row>

settingData =[
{list: [{key: "计划完成率", value: "1"}], typeName: "计划状态",typeValue: 0},
 {list: [{key: "未处理", value: "1"}, {key: "初筛不合格", value: "2"}, {key: "初筛通过",value: "3"}],typeName: "简历初筛"typeValue: 1]

最后的结果是点击多选框没有显示选中转态,打印 item.selectList 却是有选中数据。然后怀疑是vue监听不到数据变化,没有刷新页面。item.selectList  是之前没有定义的,是在这里新加的一个存储多选框选中内容的属性。 

折腾了好久,以为是二维数组监听不到的问题,后来发现是:

在开发过程中,我们时常会遇到这样一种情况:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的。

根据官方文档定义:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新

item.selectList 是在实例创建之后添加的,vue 监听不到,必需在实例创建之前添加才可以被监听到。

参考:https://www.jianshu.com/p/71b1807b1815  这是简书上大佬写的,写的很明白。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值