美文网首页
Vue.js教程_7

Vue.js教程_7

作者: 五秋木 | 来源:发表于2019-12-09 08:49 被阅读0次

    表单输入绑定- 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">

    相关文章

      网友评论

          本文标题:Vue.js教程_7

          本文链接:https://www.haomeiwen.com/subject/dtzdgctx.html