Vue.js教程_7

表單輸入綁定- v-model

基礎語法
  1. v-model指令在表單<input><textarea><select>元素上創建雙向數據綁定。根據控件類型自動選取正確的方法來更新數據。負責監聽用戶的輸入事件以及更新數據。v-model會忽略所有表單元素的Vaule、checked、selected特性的初始值而總是將Vue實例的數據作為數據來源,所以應該通過JavaScript在組件的data選項中生命初始值。
    v-model 在內部為不同的輸入元素使用不同的屬性并拋出不同的事件:

    • text 和 textarea 元素使用 value 屬性和 input 事件;
    • checkbox 和 radio 使用 checked 屬性和 change 事件;
    • select 字段將 value 作為 prop 并將 change 作為事件。
  2. 文本<input v-model="message" placeholder="edit me">

  3. 多行文本<textarea v-model="message" placeholder="add multiple lines"></textarea>

  4. 單復選框

    <div id="example-2">
       <input type="checkbox" id="checkbox" v-model="checked">
       <label for="checkbox">{{ checked }}</label>
    </div>
    <script>
    new Vue({
      el: '#example-2',
      data: {
          checked: false
      }
     })
    </script>
    
  5. 多復選框

    <div id='example-3'>
      <input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
      <label for="jack">Jack</label>
      <input type="checkbox" id="john" value="John" v-model="checkedNames">
      <label for="john">John</label>
      <input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
      <label for="mike">Mike</label>
      <br>
        <span>Checked names: {{ checkedNames }}</span>
     </div>
    new Vue({
        el: '#example-3',
        data: {
            checkedNames: []
        }
    })
    
  6. 單選按鈕

    <div id="example-4">
       <input type="radio" id="one" value="One" v-model="picked">
       <label for="one">One</label>
    <br>
       <input type="radio" id="two" value="Two" v-model="picked">
       <label for="two">Two</label>
    <br>
      <span>Picked: {{ picked }}</span>
    </div>
    new Vue({
     el: '#example-4',
     data: {
         picked: ''
     }
    })
    
  7. 選擇框

    <div id="example-5">
      <select v-model="selected">
        <option disabled value="">請選擇</option>
        <option>A</option>
        <option>B</option>
        <option>C</option>
      </select>
      <span>Selected: {{ selected }}</span>
    </div>
    new Vue({
        el: '...',
        data: {
            selected: ''
        }
    })
    

    動態選擇

    <select v-model="selected">
       <option v-for="option in options" v-bind:value="option.value">
           {{ option.text }}
       </option>
    </select>
    <span>Selected: {{ selected }}</span>
    new Vue({
         el: '...',
         data: {
             selected: 'A',
             options: [
               { text: 'One', value: 'A' },
               { text: 'Two', value: 'B' },
               { text: 'Three', value: 'C' }
           ]
        }
    })
    

    多選框:多選框并沒有實現,還需要進一步探索,暫時用不到,先放著吧。

    <div id="example-6">
       <select v-model="selected" multiple style="width: 50px;">
         <option>A</option>
         <option>B</option>
         <option>C</option>
       </select>
    <br>
    <span>Selected: {{ selected }}</span>
     </div>
    new Vue({
       el: '#example-6',
       data: {
           selected: []
        }
    })
    
值綁定
<!-- 當選中時,`picked` 為字符串 "a" -->
<input type="radio" v-model="picked" value="a">

<!-- `toggle` 為 true 或 false -->
<input type="checkbox" v-model="toggle">

<!-- 當選中第一個選項時,`selected` 為字符串 "abc" -->
<select v-model="selected">
  <option value="abc">ABC</option>
</select>
  1. 復選框
    <input
    type="checkbox"
    v-model="toggle"
    true-value="yes"
    false-value="no"
    >
    // 當選中時
    vm.toggle === 'yes'
    // 當沒有選中時
    vm.toggle === 'no'
    
  2. 單選按鈕
    <input type="radio" v-model="pick" v-bind:value="a">
    // 當選中時
    vm.pick === vm.a
    

3.選擇框中選項

<select v-model="selected">
<!-- 內聯對象字面量 -->
   <option v-bind:value="{ number: 123 }">123</option>
 </select>
 // 當選中時
 typeof vm.selected // => 'object'
 vm.selected.number // => 123
修飾符

.lazy:在默認情況下,v-model 在每次 input 事件觸發后將輸入框的值與數據進行同步 (除了上述輸入法組合文字時)。你可以添加 lazy 修飾符,從而轉變為使用 change 事件進行同步:

<!-- 在“change”時而非“input”時更新 -->
<input v-model.lazy="msg" >

.number:自動將用戶的輸入值轉為數值類型,可以給 v-model 添加 number 修飾符。<input v-model.number="age" type="number">,即使在 type="number" 時,HTML 輸入元素的值也總會返回字符串。如果這個值無法被 parseFloat() 解析,則會返回原始的值。
.trim:自動過濾用戶輸入的首尾空白字符,可以給 v-model 添加 trim 修飾符。<input v-model.trim="msg">

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容

  • Vue 實例 屬性和方法 每個 Vue 實例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,230評論 0 6
  • 33、JS中的本地存儲 把一些信息存儲在當前瀏覽器指定域下的某一個地方(存儲到物理硬盤中)1、不能跨瀏覽器傳輸:在...
    萌妹撒閱讀 2,087評論 0 2
  • 主要還是自己看的,所有內容來自官方文檔。 介紹 Vue.js 是什么 Vue (讀音 /vju?/,類似于 vie...
    Leonzai閱讀 3,367評論 0 25
  • vue.js簡介 Vue.js讀音 /vju?/, 類似于 viewVue.js是前端三大新框架:Angular....
    LiWei_9e4b閱讀 516評論 0 0
  • 下載安裝搭建環境 可以選npm安裝,或者簡單下載一個開發版的vue.js文件 瀏覽器打開加載有vue的文檔時,控制...
    冥冥2017閱讀 6,071評論 0 42