Vue.js笔记-表单控件绑定

基础语法

        可以用v-model指令在表单控件元素上创建双向数据绑定,根据控件类型它自动选取正确的方法更新元素。
text
 
    
  1. Message is: {{ message }}span>
  2. <input type="text" v-model="message" placeholder="edit me">
Multiline text
 
     
  1. {{ message }}p>

  2. <textarea v-model="message" placeholder="add multiple lines">textarea>
checkbox
       单个勾选框,逻辑值:
 
    
  1. <input type="checkbox" id="checkbox" v-model="checked">
  2. <label for="checkbox">{{ checked }}label>//显示勾选状态,false或true
        多个勾选框,绑定到同一个数组:
 
    
  1. <input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
  2. <label for="jack">Jacklabel>
  3. <input type="checkbox" id="john" value="John" v-model="checkedNames">
  4. <label for="john">Johnlabel>
  5. <input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
  6. <label for="mike">Mikelabel>

  7. Checked names: {{ checkedNames | json }}span>
  8. new Vue({
  9.   el: '...',
  10.   data: {
  11.     checkedNames: []
  12.   }
  13. })
radio
 
     
  1. <input type="radio" id="one" value="One" v-model="picked">
  2. <label for="one">Onelabel>
  3. <input type="radio" id="two" value="Two" v-model="picked">
  4. <label for="two">Twolabel>
  5. Picked: {{ picked }}span>
  6. var vm = new Vue({
  7.    el : "#app",
  8.    data:{
  9.   picked:''
  10. }
  11. })
select
       单选:
 
    
  1. <select v-model="selected">
  2.   <option selected>Aoption>
  3.   Boption>
  4.   Coption>
  5. select>
  6. Selected: {{ selected }}span>
       多选(绑定到一个数组):
 
    
  1. <select v-model="selected" multiple>
  2.   <option selected>Aoption>
  3.   Boption>
  4.   Coption>
  5. select>

  6. Selected: {{ selected | json }}span>
       动态选项(用v-for渲染):  
 
    
  1. <select v-model="selected">
  2.   <option v-for="option in options" v-bind:value="option.value">
  3.     {{ option.text }}
  4.   option>
  5. select>
  6. Selected: {{ selected }}span>
  7. new Vue({
  8.   el: '...',
  9.   data: {
  10.     selected: 'A',
  11.     options: [
  12.       { text: 'One', value: 'A' },
  13.       { text: 'Two', value: 'B' },
  14.       { text: 'Three', value: 'C' }
  15.     ]
  16.   }
  17. })

绑定value

       对于单选按钮,勾选框及选择框选项,v-model 绑定的 value 通常是静态字符串(对于勾选框是逻辑值):    
 
      
  1. <input type="radio" v-model="picked" value="a">
  2. <input type="checkbox" v-model="toggle">
  3. <select v-model="selected">
  4.   <option value="abc">ABCoption>
  5. select>
       但是有时我们想绑定 value 到 Vue 实例的一个动态属性上,这时可以用 v-bind 实现,并且这个属性的值可以不是字符串。
checkbox
 
    
  1. <input
  2.   type="checkbox"
  3.   v-model="toggle"
  4.   v-bind:true-value="a"
  5.   v-bind:false-value="b">
  6. // 当选中时
  7. vm.toggle === vm.a
  8. // 当没有选中时
  9. vm.toggle === vm.b
radio
 
    
  1. <input type="radio" v-model="pick" v-bind:value="a">
  2. // 当选中时
  3. vm.pick === vm.a
select options
 
    
  1. <select v-model="selected">
  2.  
  3.   <option v-bind:value="{ number: 123 }">123option>
  4. select>
  5. // 当选中时
  6. typeof vm.selected // -> 'object'
  7. vm.selected.number // -> 123

参数特性

lazy
       在默认情况下,v-model 在input 事件中同步输入框值与数据,可以添加一个特性 lazy,从而改到在 change 事件中同步:
 
     
  1. <input v-model="msg" lazy>
number
       如果想自动将用户的输入转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个特性 number:
 
       
  1. <input v-model="age" number>
debounce
       debounce 设置一个最小的延时,在每次敲击之后延时同步输入框的值与数据。如果每次更新都要进行高耗操作(例如在输入提示中 Ajax 请求),它较为有用。
 
       
  1. <input v-model="msg" debounce="500">
       注意 debounce 参数不会延迟 input 事件:它延迟“写入”底层数据。因此在使用 debounce 时应当用 vm.$watch() 响应数据的变化。若想延迟 DOM 事件,应当使用 debounce 过滤器。

案例

 
   
  1. lang="en">
  2.     charset="UTF-8">
  3.     </span><span class="pln" style="color:rgb(72,72,76);">PlayAround2 Have Fun</span><span class="tag" style="color:rgb(0,0,136);">
  4.     src="https://cdn.jsdelivr.net/vue/1.0.26/vue.min.js">
  5.     id="app">
  6.  
  7.        

    checkBox

  8.         type="checkbox" v-model="checked">
  9.         {{checked}}
  10.  
  11.        

    multi checkbox

  12.         type="checkbox" id="Kobe" value="Kobe" v-model="names">
  13.         for="Kobe">Kobe
  14.         type="checkbox" id="Curry" value="Curry" v-model="names">
  15.         for="Curry">Curry
  16.         type="checkbox" id="Aaron" value="Aaron" v-model="names">
  17.         for="Aaron">Aaron
  18.        
  19.         Checked names: {{names | json}}
  20.  
  21.        

    Radio

  22.         type="radio" id="one" value="one" v-model="picked">
  23.         for="one">one
  24.        
  25.         type="radio" id="two" value="two" v-model="picked">
  26.         for="two">two
  27.        
  28.         Picked: {{picked}}
  29.  
  30.        

    Select

  31.         v-model="selected">
  32.             selected>Kobe
  33.             Curry
  34.             Aaron
  35.        
  36.         Selected: {{selected}}
  37.  
  38.        

    Multi Select

  39.         multiple v-model="multiSelected">
  40.             Kobe
  41.             Curry
  42.             Aaron
  43.        
  44.         Selected: {{multiSelected}}
  45.  
  46.  
  47.        

    Select with for

  48.         v-model="selectedPlayer">
  49.             v-for="option in options" :value="option.value">{{option.text}}
  50.        
  51.         Selected: {{selectedPlayer}}
  52.  
  53.        

    Lazy-改变更新的事件从input->change

  54.         v-model="msg" lazy>
  55.         Msg:{{msg}}
  56.  
  57.        

    Number

  58.         v-model="age" number>
  59.         age:{{age}}
  60.  
  61.        

    debounce-延迟更新view

  62.        

    Edit me v-model="delayMsg" debounce="500">

  63.         delayMsg:{{delayMsg}}
  64.  
  65.    
  •  
  •    
  • 你可能感兴趣的:(Vue.js)