資料來於官方文檔:ajax
http://cn.vuejs.org/guide/forms.html
json
本文是在官方文檔的基礎上,更加細緻的說明,代碼更多更全。數組
簡單來講,更適合新手閱讀app
(二十三)表單綁定ide
①常見綁定方法:
【1】文本輸入框綁定;ui
【2】textarea綁定(相似【1】);spa
【3】radio選中值綁定;.net
【4】checkbox綁定(自動捆綁數組,無需name);
【5】select綁定;
【6】select multiple多選選中框綁定;
【7】動態綁定(以上不一樣類型但同一個值能夠互動);
【8】checkbox選中和未選中賦予不一樣的值(主要是針對不選中狀態);
【9】checkbox,radio,select選中狀態的值動態綁定(主要是指值動態綁定對象或者是vm實例的屬性,例如data裏的某個屬性,或者是computed的某個值);
如代碼:
- <div id="app">
- <input type="text" v-model="text"/>
- <div>{{text}}</div>
- <div>——————————————</div>
- <textarea style="width:200px;height:100px;" v-model="textarea"></textarea>
- <div>{{textarea}}</div>
- <div>——————————————</div>
- <label><input type="checkbox" v-model="checkbox"/>左邊選中右邊則爲true:{{checkbox}}</label>
- <div>——————————————</div>
- <label><input type="checkbox" value="firstCheckbox" v-model="checkboxes">firstCheckbox</label><br/>
- <label><input type="checkbox" value="secondCheckbox" v-model="checkboxes">secondCheckbox</label><br/>
- <label><input type="checkbox" value="thirdCheckbox" v-model="checkboxes">thirdCheckbox</label><br/>
- <div>以上選中的value狀況爲:{{checkboxes}}</div>
- <div>以上選中的value狀況爲(以json格式顯示,這裏使用了json過濾器):{{checkboxes|json}}</div>
- <div>——————————————</div>
- <label><input type="radio" value="A" v-model="radio"/>value = A</label><br>
- <label><input type="radio" value="B" v-model="radio"/>value = B</label><br>
- <div>{{radio}}</div>
- <div>注意,這裏的v-model的值應該被註冊到data裏面,不然會紅字警告(事實上,全部的都應該也這麼作)</div>
- <div>——————————————</div>
- <select v-model="select">
- <option>默認值,option不設value</option>
- <option value="B">value的值設爲B</option>
- <option selected value="C">默認選擇這個,value設爲C</option>
- </select>
- <div>{{select}}</div>
- <div>一樣,這裏不註冊也會被報錯</div>
- <div>——————————————</div>
- <div>如下是select的多選,按住ctrl能夠連續選,按住shift選擇區間</div>
- <select style="width:200px;height:100px;overflow: hidden;" v-model="multiple" multiple>
- <option value="A">A</option>
- <option value="B">B</option>
- <option value="C">C</option>
- <option value="D">D</option>
- <option value="E">E</option>
- </select>
- <div>多選選中的值是:{{multiple}}</div>
- <div>注意,這個多選select框是默認帶y軸的滾動條的</div>
- <div>——————————————</div>
- <div>動態渲染,checkbox和多選select框是互相影響的</div>
- <label><input type="checkbox" value="A" v-model="Dynamic">A</label><br/>
- <label><input type="checkbox" value="B" v-model="Dynamic">B</label><br/>
- <label><input type="checkbox" value="C" v-model="Dynamic">C</label><br/>
- <select style="width:200px;height:100px;overflow: hidden;" v-model="Dynamic" multiple>
- <option value="A">A</option>
- <option value="B">B</option>
- <option value="C">C</option>
- </select>
- <div>選中狀況是:{{Dynamic}}</div>
- <div>——————————————</div>
- <div>選中和選中的值自定義的checkbox</div>
- <label><input type="checkbox" v-bind:true-value="differentValues.t" v-bind:false-value="differentValues.f"
- v-model="different">true/false</label><br/>
- <div>different value: {{different}}</div>
- <div>注意,以上不能像普通checkbox那麼樣,用一個數組做爲多個checkbox的v-model的變量,且其值是綁定與vm實例的某個屬性;
- 所以,不能在v-bind裏的值是一個字符串,但能夠是一個對象,例如{a:1}這樣(固然,這個時候顯示的值也是一個對象了)
- </div>
- <div>——————————————</div>
- <div>自定義之的radio</div>
- <label><input type="radio" v-bind:value="text" v-model="customize"/>值爲1</label>
- <label><input type="radio" v-bind:value="textarea" v-model="customize"/>值爲1</label>
- <div>{{customize}}</div>
- <div>一樣,值能夠是vm的一個屬性或者是一個對象,另外,一樣有效的還有select。(主要就這三個有選中狀態,除此以外雖然例如Date類型也有選中,可是意義不大)</div>
- <div>——————————————</div>
- </div>
- <script>
- var vm = new Vue({
- el: '#app',
- data: {
- text: "默認有輸入內容",
- textarea: "這裏是多行文字\n第二行,\\n是換行符,但在字符串裏顯示爲空格",
- checkboxes: [],
- radio: "",
- select: "",
- multiple: "",
- Dynamic: {},
- different: "",
- differentValues: {
- t: "true",
- f: "false"
- },
- customize: ''
- }
- })
- </script>
②添加參數:
參數 |
說明 |
lazy |
非實時更新,而是focus狀態結束後更新 |
number |
將值自動轉爲number類型輸出 |
debounce |
延遲若干毫秒再更新數值 |
【1】lazy
在取消focus狀態後才更新值,而不是按鍵按下時就更新值。
對文本輸入框和textarea都有效
如代碼:
- <input type="text" v-model="text" lazy/>
- <div>{{text}}</div>
【2】number
將輸入的值自動轉爲number類型,若是轉後爲NaN類型,則返回原值;
如代碼:
- <input type="text" v-model="text" number/>
- <div>{{text}}</div>
- <div>{{typeof text}}</div>
若是加上number這個參數,那麼輸入數字時,則提示類型爲string,加上以後,純數字會提示number類型;
【3】debounce=」毫秒數」
當值連續若干毫秒沒有變化時,觸發變量的值的改變;
如代碼:
- <input type="text" v-model="text" debounce="1000"/>
- <div>{{text}}</div>
當我以500ms的時間差依次輸入1,2,3,4,5,6這六個數字時,text的值不會被更新;
當我中止輸入有1000ms時,text值纔會被更新;
所以,適合相似ajax等高消耗操做。