• Tags
  •         
  • www.breakyizhan.com
  •    

    Vue.js的表单输入绑定,用的是 v-model指令。v-model指令可以创建双向数据绑定。

    Vue.js 的表单输入绑定 v-model

    v-model指令会根据控件类型自动选取正确的方法来更新元素。我们知道html的表单输入主要有一下类型,那么,我们就来看看v-model怎么实现的:

    • 文本 <input >
    • 多行文本 <textarea>
    • 复选框 <input type="checkbox" >
    • 单选按钮 <input type="radio" >
    • 选择框<select>

    Vue.js 的表单输入绑定 v-mode之文本和多行文本

    v-model 会根据控件类型自动选取正确的方法来更新元素。

    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Vue 测试实例 - Break易站(breakyizhan.com)</title>
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    </head>
    <body>
    <div id="app">
      <p>input 元素:</p>
      <input v-model="message" placeholder="编辑我……">
      <p>消息是: {{ message }}</p>
    	
      <p>textarea 元素:</p>
      <p style="white-space: pre">{{ message2 }}</p>
      <textarea v-model="message2" placeholder="多行文本输入……"></textarea>
    </div>
    
    <script>
    new Vue({
      el: '#app',
      data: {
        message: 'Breakyizhan',
    	message2: 'Break易站
    //www.breakyizhan.com'
      }
    })
    </script>
    </body>
    </html>
    

    尝试一下 >>

    Vue.js 的表单输入绑定 v-mode之复选框

    复选框如果是一个为逻辑值,如果是多个则绑定到同一个数组:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Vue 测试实例 - Break易站(breakyizhan.com)</title>
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    </head>
    <body>
    <div id="app">
      <p>单个复选框:</p>
      <input type="checkbox" id="checkbox" v-model="checked">
      <label for="checkbox">{{ checked }}</label>
    	
      <p>多个复选框:</p>
      <input type="checkbox" id="breakyizhan" value="breakyizhan" v-model="checkedNames">
      <label for="breakyizhan">breakyizhan</label>
      <input type="checkbox" id="google" value="Google" v-model="checkedNames">
      <label for="google">Google</label>
      <input type="checkbox" id="taobao" value="Taobao" v-model="checkedNames">
      <label for="taobao">taobao</label>
      <br>
      <span>选择的值为: {{ checkedNames }}</span>
    </div>
    
    <script>
    new Vue({
      el: '#app',
      data: {
    	checked : false,
        checkedNames: []
      }
    })
    </script>
    </body>
    </html>
    

    尝试一下 >>

    Vue.js 的表单输入绑定 v-mode之单选按钮

    v-model单选按钮双向数据绑定:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Vue 测试实例 - Break易站(breakyizhan.com)</title>
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    </head>
    <body>
    <div id="app">
      <input type="radio" id="breakyizhan" value="breakyizhan" v-model="picked">
      <label for="breakyizhan">breakyizhan</label>
      <br>
      <input type="radio" id="google" value="Google" v-model="picked">
      <label for="google">Google</label>
      <br>
      <span>选中值为: {{ picked }}</span>
    </div>
    
    <script>
    new Vue({
      el: '#app',
      data: {
    	picked : 'breakyizhan'
      }
    })
    </script>
    </body>
    </html>
    

    尝试一下 >>

    Vue.js 的表单输入绑定 v-mode之选择框

    v-mode选择框双向数据绑定:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Vue 测试实例 - Break易站(breakyizhan.com)</title>
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    </head>
    <body>
    <div id="app">
      <select v-model="selected" name="fruit">
        <option value="">选择一个网站</option>
        <option value="www.breakyizhan.com">Break易站</option>
        <option value="www.google.com">Google</option>
      </select>
     
      <div id="output">
          选择的网站是: {{selected}}
      </div>
    </div>
    
    <script>
    new Vue({
      el: '#app',
      data: {
    	selected: '' 
      }
    })
    </script>
    </body>
    </html>
    

    尝试一下 >>

    修饰符

    .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">

     
    转载请保留页面地址:https://www.breakyizhan.com/vue/6690.html