Spring Boot

为什么 vue 中 v-model="this.data" 会报

2018-04-08  本文已影响0人  BluesCurry

最近遇到这么一个问题,在写 v-model="value" 属性时手误写成了 v-model="this.value" 然后发现页面没有报错但是双向绑定失效,找了很长时间发现多写了一个 this,这对于一个一年工作经验以上的程序员来说确实是不应该,不过既然有错误我们就需要看看为什么加了 this 就不可以呢,因为在模板赋值的时候是可以加 this 的,比如 <div>{{this.message}}</div>,那为什么双向绑定不能加 this 呢,我们知道其实 v-model 也是一个语法糖,比如在 input 输入框中它是由 v-bindv-input 组成的一个双向绑定,来看代码:

<div id="app">
  <div>值:{{this.value}}</div>
  <input type="text" v-model="value">
  <!-- <input type="text" v-bind:value="value" v-on:input="value = $event.target.value" -->
  <!-- <input type="text" :value="value" @input="value = $event.target.value" -->
</div>
new Vue({
  el: "#app",
  data: {
    value: 'defaultValue'
  }
})

上面的三种写法都可以,因为 v-bindv-on 都会把双引号中的内容当做一段 js 代码读取,v-bind 里面出现 this 其实没事也就是 v-bind:value="this.inputVal" 这么写也是没问题的,但是在 v-on 中如果这么写 v-on:input="this.inputVal = $event.target.value" 就不可以了因为这里面不能用 this 关键字会找不到 inputVal 这个属性,所以也就是说 v-model 的属性值中同样不能带有 this。以后小伙伴在使用双向绑定时一定要注意这一点。

上一篇下一篇

猜你喜欢

热点阅读