zoukankan      html  css  js  c++  java
  • 项目中遇到的问题 --浅拷贝

      今天在写项目的时候,遇到了这样一个问题

      使用的element框架中是一个单选框

     <el-radio-group v-model="ruleForm.jdgPs">
        <el-radio :label="1" value = "0">通过</el-radio>
        <el-radio :label="2" value = "1">终止</el-radio>
        <el-radio :label="3" value = "2">退回</el-radio>
      </el-radio-group>
    
    
    <el-form-item label="处理原因" prop="pcsgRsn" >
        <el-input type= "textarea" v-model="ruleForm.pcsgRsn">
    <el-form-item>

      要求是   单选切换时 切换到通过的时候 文本域里面的字段显示通过,切换到终止或者退回的时候,文本域文本重新为空

      解决方法:

      element UI 对于 单选 el-radio-group 有一个change事件,他的回调是我们选择的绑定值 则我在代码中是这么写的:

    <el-radio-group @change ="changeValue">
    <el-radio-group>
    
    
    methods:{
        changeValue(value){
        
        if(value == '1'){
            this.ruleForm.pcsRsn = '通过'
    }else{
            this.ruleForm.pcsRsn = ''
    }
    }
    }

     问题就出现了 :

      里面的value值是 1,2,3没错

      但 当我切换的时候只有在切换到中止这一项的时候,文本域显示通过,而中止的value值则为二,出现了一个比较矛盾的结果,

      查找了一下,我估计是因为 vue没有办法检测复杂数据类型的更新和切换,而我v-model的是一个对象里面的值 所以询问了同事

      他使用解构赋值的办法的重置了一下这个对象,只在我的基础上加了一行代码,如下

    methods:{
        changeValue(value){
        
        if(value == '1'){
            this.ruleForm.pcsRsn = '通过'
             this.ruleForm = {...this.ruleForm} //只加了这么一行代码
    }else{
            this.ruleForm.pcsRsn = ''
    }
    }
    }

      就使我切换选项的时候不再出现矛盾的结果而是正常显示了

      浅拷贝使vue可以检测对象更新了

  • 相关阅读:
    如何drop有default constraint的column SQL
    Asp.net中文本框全选的实现
    [转载]找回被误删的VISTA“显示桌面”图标
    [转]深入讲解数据库中User和Schema的关系
    模拟键盘输入
    ASP.NET页面之间传递值的几种方法
    查询整个数据库中某个特定值所在的表和字段的方法
    .NET的GCHandler
    DateTime.ToString() Patterns
    VS 2008的Setup project项目添加卸载功能
  • 原文地址:https://www.cnblogs.com/Leaden/p/14164028.html
Copyright © 2011-2022 走看看