問題描述:input 輸入框, 綁定計算屬性時,沒法雙向響應,可以和value綁定,再通過input事件,獲取dom的value。
解決辦法1:
用computed,不用v-model
單號: <el-input id="orderNumValue" :value.trim="orderNum" placeholder="請輸入" size="mini" style="width: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 則報錯。