zoukankan      html  css  js  c++  java
  • 在vue中 input的v-model和computed一起使用出现的问题

    问题描述:input 输入框, 绑定计算属性时,没法双向响应,可以和value绑定,再通过input事件,获取dom的value。

    解决办法1

    用computed,不用v-model

     单号: 
     <el-input  id="orderNumValue" :value.trim="orderNum" 
        placeholder="请输入" size="mini" style="75px">
      </el-input >//这是element-ui的input组件
    input
    <script>
    computed: {
        
         orderNum(){//历史信息单号
          
          switch(this.problemTypesOrder){
            case "first":
            return this.formData1.billCode;
            break;
            case "second":
            return this.formData2.billCode;
            break;
            case "four":
            return this.formData4.orderCode;
            break;
            default:
             return this.formData1.billCode;
          }
         }
    }
     methods: {
         upData(){
          console.log($("#orderNumValue").val())//通过dom的value值,
          获取value,操作数据
        }
    }
    </script>

    解决办法2

    用watch,和v-model,不用computed

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
    </head>
    <body>
      <div id="app">
        <input id="wang" type="text" v-model="m.a" @input="fun"> 
        {{m.a}}
        <br>
       <input type="text" v-model = "n">
        {{n}}
    
      </div>
    </body>
      
     <script src="https://sv-source.zt-express.com/gongdan/js/vue.min.js"></script>
     
      <script>
     
      console.log(new Date())
        new Vue({
          el: '#app',
          data: function() {
            return { 
              m:{a:"m"},
              n:0
             }
          },
          methods: {
              fun(val){
                console.log(this)
                this.$set(this.m,"a",wang.value)
              }
            },
            watch:{
              m:{
                deep: true,
                handler: function (newVal,oldVal){
                    this.n = newVal.a
                }
              }
            }
    
        })
      </script>
    </html>

    解决办法3

    用computed 的get和set

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
     
    </head>
    <body>
      <div id="app">
        <input id="wang" type="text" v-model="m.a" > 
        {{m.a}}
        <br>
       <input type="text" v-model = "wangNum2">
        {{wangNum2}}
    
      </div>
    </body>
     
    <script src="https://sv-source.zt-express.com/gongdan/js/vue.min.js"></script>
    
      <script>
     
      console.log(new Date())
        new Vue({
          el: '#app',
          data: function() {
            return { 
              m:{a:"m"},
              // n:0
             }
          },
          methods: {
              
            },
            computed:{
              wangNum1(){//没有重写时
                return this.m.a
              },
              wangNum2:{//重写方法
                get(){
                    return this.m.a
                },
                set(val){
                    console.log(val)
                    this.m.a = val
                }
              }
            }
    
        })
      </script>
    </html>

    因为 v-model 是双向绑定的缘故,使用 computed 若不同时加 get 和 set 则报错。

  • 相关阅读:
    highcharts 时间少8小时问题
    Spring声明式事务配置管理方法
    jetty简介
    java事务管理
    oracle表中某个字段含有字符回车、空格的手动修改方式
    java环境变量配置
    JAVA解析XML的四种方式
    JSON-lib框架,JAVA对象与JSON、XML之间的相互转换
    Java WebService简单实例
    HTTP协议报文、工作原理及Java中的HTTP通信技术详解
  • 原文地址:https://www.cnblogs.com/momo798/p/13223596.html
Copyright © 2011-2022 走看看