vue判断传来的值,禁用表单却需要先获取焦点

本文探讨了在Vue中遇到的问题,即在页面值传递时,使用数据进行条件判断失效的情况。示例代码展示了在Radio Group中根据model.A和B的值禁用选项,但由于异步数据加载,初始值未被正确用于判断。解决方案是将接收到的数据分别赋值给独立的data属性,避免直接与表单数据对象混用,确保生命周期的一致性。总结中强调了在Vue中处理异步数据时应如何正确地更新和使用数据。
摘要由CSDN通过智能技术生成

vue页面值传递的时候,传过来一堆要显示的数据,同时也有要进行判断的数据,比如判断是否为true然后禁用表单等


场景

示例:如下判断要不要禁用,实际上却是F回显了,但是AB就算大于5也无法禁用

<a-radio-group v-model="model.F" name="radioGroup8">
    <a-radio :value="4" :disabled="model.A >= 5">优</a-radio>
    <a-radio :value="2" :disabled="model.B >= 5">良</a-radio>
    <a-radio :value="1">一般</a-radio>
    <a-radio :value="0">差</a-radio>
</a-radio-group>

原因

找不到,个人猜测是因为vue默认用的是异步执行方法,所以表单使用传过来的值已经挂载在页面上了,是两个线路,所以不能拿来判断,要将获取到的model.A和B,再次赋给别的data

解决方法

这里我是重新定义data

data(){
    return{
        model:{},
        A:0,
        B:0,
    }
}
edit (record) {
    this.model = Object.assign({}, record);
    getAction("/myScore/myScore/xianSanMing",{projectId:record.id}).then((res)=>{
        if(res.success){
        //this.model.A = res.result.A;  这是以前直接给表单数据里了
        //this.model.B = res.result.B;  
        this.A = res.result.A;  //这是现在直接给新的值,然后
        this.B = res.result.B;
    }});
    this.visible = true;
},

总结

vue传过来的值要想使用,千万别把值和表单展示的对象放一起,因为一个对象只能一个生命周期用,除非双向绑定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值