表单输入绑定

Vue.js 谢支星

彩色文字彩色文字彩色文字彩色文字彩色文字

表单输入绑定

基础用法:

用 v-model 指令在表单 < input> 及 < textarea> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖

它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理

v-model 会忽略所有表单元素的 value、checked、selected 特性的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data 选项中声明初始值

1. 文本

v-model

<div id="app">
       
        <input v-model="message" placeholder="请输入你的姓名字" type="text"></input>
        你的姓名字:{{message}}
      </div>
      <script>
          var vm = new Vue({
                el:"#app",
                data:{
                    message:""
                },
             });
 </script>

效果:在input里输入内容,下面请输入你的姓名字实时动态更新 

搜狗截图20180901104653.png

搜狗截图20180901105048.png

v-show

<input type="text" v-model="age">
  <span v-show="age">你的年龄:{{age}}</span>
<script>
       var vm = new Vue({
              el:"#app",
               data:{
                    age:""
                },
             });
 </script>

不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS 属性 display

注意v-show 不支持 <template> 元素,也不支持 v-else

text.png
text1.png

2.多行文本

 <textarea v-model="message" placehoder="edit me"></textarea>
      <!-- white-space: nowrap,规定段落中的文本不进行换行 -->
  <p style="white-space: nowrap">Message:{{message}}</p>
var vm = new Vue({
            el:"#app",
            data:{
                message:""
            },
        });

效果:在textarea里输入内容,下面Message实时动态更新 

注意: 在文本区域插值 (<textarea></textarea>) 并不会生效,应用 v-model 来代替。

3.选择框

<div id="app">
  <select v-model="myseleted">
    <option disabled value="">请选择</option>
    <option>A</option>
    <option>B</option>
    <option>C</option>
  </select>
  <p>{{myseleted}}</p>
</div>
var vm = new Vue({
  el:"#app",
  data:{
    myseleted:""
  },
});

注意

如果 v-model 表达式的初始值未能匹配任何选项,<select> 元素将被渲染为“未选中”状态。在 iOS 中,这会使用户无法选择第一个选项。因为这样的情况下,iOS 不会触发 change 事件。因此,更推荐像上面这样提供一个值为空的禁用选项。 

效果图: 

搜狗截图20180901120352.png

4.单选按钮

<div id="app">
  <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: ''
  }
})

效果图:

搜狗截图20180901131854.png

搜狗截图20180901131908.png

搜狗截图20180901131923.png

总结:

不管哪种表单组件都是将value或者表单组件的值通过v-model向JS传递和逆向的过程,但是注意对于复选框,它的值也可以是布尔值。

还能输出{{restrictNumber}}个字符  
  • {{reply.author}}

    {{CommonUtil.formateDate(reply.ac_CommentDate).shortTime}}
  • 回复了{{Comments.author}} :