v-if 刷新动态刷新失败解决方案

最近在使用Vue完成项目工作时,遇到一个关于v-if刷新的问题来记录一下。
背景:根据绑定的Object进行数据回显,同时用户可以修改属性type和value,value的显示方式随type的修改而改变
问题:用户在修改type时,value显示方式却不刷新
解决方案:在用户修改type后出发事件中,强制刷新组建

 <FormItem  >
                <Row>
                  <Col span="8">
                    <Select v-model="valueType[index][v].type" @on-change="changeType(index, v)" >
                      <Option v-for="item in typeList" :value="item.value" :key="item.value">{{ item.label }}</Option>
                    </Select>
                  </Col>
                  <Col span="14">
                    <Input v-if="valueType[index][v].type === 'Number'" :key="valueType[index][v].type" v-model.number="valueType[index][v].key" type="number"></Input>
                    <Input v-else-if="valueType[index][v].type === 'Null'" :key="valueType[index][v].type"  v-model="valueType[index][v].key" readonly placeholder="null"></Input>
                    <Select v-else-if="valueType[index][v].type === 'Boolean'" :key="valueType[index][v].type"  v-model="valueType[index][v].key" filterable>
                      <Option :value="'true'" :key="'true'" >true</Option>
                      <Option :value="'false'" :key="'false'" >false</Option>
                    </Select>
                    <Input v-else v-model="valueType[index][v].key" :key="valueType[index][v].type"></Input>
                  </Col>
                </Row>
              </FormItem>

changeType方法:

changeType (index, v) { // 修改数据类型,强制刷新组件,value置空
      this.valueType[index][v].key = ''
      this.$forceUpdate() // 强制刷新组件
    }

效果图:
在这里插入图片描述
在修改bgf的type为Number后,其对应value置空,且显示框修改
在这里插入图片描述
原因分析:在使用时,由于我将valueType[index][v].type以及valueType[index][v].key绑定给了组件,在修改type值后,虽然v-if应该动态刷新,但是由于数据层次过深,就导致render函数没有自动刷新,因此需要手动刷新组件(v-if也懒?跑太远的活不愿意干?hhhh)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值