由於v-model 只是語法糖, <input v-model="message"> 與下面的兩行代碼是一致的:
<input v-bind:value="message" v-on:input="message = $event.target.value" />
<input :value="message" @input="message = $event.target.value" />
<p v-bind:class="someclass"></p>
如果不加 v-bind 那么 someclass 就是個常量,沒有任何動態數據參與。當加上 v-bind 之后,它的值 someclass 不是字符串,而是vue實例對應的 data.someclass 這個變量。
做一個實驗:
在data對象中創建兩個變量:name,value
<input :value="name" v-model="body">
顯示兩個變量值:
<h1>{{name}}---{{body}}</h1>
結果:
1、修改input輸入框中的值,body隨着輸入框的值變化,name不變
修改name的值,輸入框和body都不變
2、將v-model=“body”去掉,即<input :value="name" >
修改input輸入框中的值,name不變
修改name的值,輸入框也隨之變化
3、給name和body都賦初始值,即name:"name",body:"body"
當<input :value="name" v-model="body">,輸入框初始值為body
當i<input :value="name" >,輸入框初始值為name
總結:
當v-model會忽略所有表單元素的
value
、checked
、selected
特性的初始值而總是將 Vue 實例的數據作為數據來源。你應該通過 JavaScript 在組件的data
選項中聲明初始值