一、业务场景:前两个文本框中输入值,最后一个文本框自动监听前面输入的值
方式一:使用事件绑定机制@keyup,在methods中写入监听方法
<body> <div id="app"> firstName:<input type="text" v-model="firstname" @keyup="getFullName">+ lastName<input type="text" v-model="lastname" @keyup="getFullName2">= <input type="text" v-model="fullname" > <p>{{fullname}}</p> </div> <script> var vm = new Vue({ el: ‘#app‘, data: { firstname: ‘‘, lastname: ‘‘, fullname: ‘‘ }, methods: { getFullName(){ this.fullname = this.firstname + this.lastname }, getFullName2(){ this.fullname = this.firstname + this.lastname } } }) </script> </body>
方法二:使用watch监听文本变化
使用watch属性 可以监视data中指定数据的变化 然后触发这个watch中对应的处理方法
<body> <div id="app"> <input type="text" v-model="firstname" >+ <input type="text" v-model="lastname" >= <input type="text" v-model="fullname" > </div> <script> var vm = new Vue({ el: ‘#app‘, data: { firstname: ‘‘, lastname: ‘‘, fullname: ‘‘ }, methods: {}, watch: { //使用这个属性 可以监视data中指定数据的变化 然后触发这个watch中对应的处理方法 //firstname可加 可不加引号 但如果是first-name 必须要加引号 firstname: function(newVal, oldVal){ console.log(‘监视变化‘) this.fullname = newVal + ‘-‘ + this.lastname }, lastname: function (newVal) { this.fullname = this.firstname + ‘-‘ + newVal } } }) </script> </body>
方法三:使用computed计算文本值
在computed中可以定义一些属性 这些属性叫【计算属性】 计算属性的本质就是一个方法,只不过在使用这些计算属性的时候 就把他们的名称当做属性来使用
注意:
<body> <div id="app"> <input type="text" v-model="firstname" >+ <input type="text" v-model="lastname" >= <input type="text" v-model="fullname" > <p>{{fullname}}</p> </div> <script> var vm = new Vue({ el: ‘#app‘, data: { firstname: ‘‘, lastname: ‘‘ }, methods: {}, computed: { fullname: function () { console.log(‘计算fullname被调用次数‘) return this.firstname + ‘-‘ + this.lastname } } }) </script> </body>
二、三种方法之间的比较
Vue之监听数据变化watch、computed、methods
原文:https://www.cnblogs.com/ella-li/p/14722611.html