可以用 v-model 指令在表单 <input><textarea><select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

    注:v-model 会忽略所有表单元素的 valuecheckedselected 特性的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data 选项中声明初始值。
    v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件:

    • text 和 textarea 元素使用 value 属性和 input 事件;
    • checkbox 和 radio 使用 checked 属性和 change 事件;
    • select 字段将 value 作为 prop 并将 change 作为事件。
    1. <div id="app">
    2. <div id="example-1">
    3. <input v-model="message" placeholder="edit me">
    4. <p>Message is: {{ message }}</p>
    5. <textarea v-model="message2" placeholder="add multiple lines"></textarea>
    6. <p style="white-space: pre-line;">{{ message2 }}</p>
    7. <br />
    8. <div style="margin-top:20px;">
    9. <input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
    10. <label for="jack">Jack</label>
    11. <input type="checkbox" id="john" value="John" v-model="checkedNames">
    12. <label for="john">John</label>
    13. <input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
    14. <label for="mike">Mike</label>
    15. <br>
    16. <span>Checked names: {{ checkedNames }}</span>
    17. </div>
    18. <div style="margin-top:20px;">
    19. <input type="radio" id="one" value="One" v-model="picked">
    20. <label for="one">One</label>
    21. <br>
    22. <input type="radio" id="two" value="Two" v-model="picked">
    23. <label for="two">Two</label>
    24. <br>
    25. <span>Picked: {{ picked }}</span>
    26. </div>
    27. <button type="button" @click="submit">提交</button>
    28. </div>
    29. </div>
    30. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    31. <script type="text/javascript">
    32. var vm = new Vue({
    33. el : "#app",
    34. data : {
    35. message : "test",
    36. message2 :"hi",
    37. checkedNames : ['Jack', 'John'],//复选框用数组
    38. picked : "Two"
    39. },
    40. methods: {
    41. submit : function () {
    42. //表单提交事件
    43. console.log(this.message);
    44. var postObj={
    45. msg1:this.message,
    46. msg2:this.message2,
    47. checkval:this.checkedNames
    48. }
    49. console.log(postObj)
    50. }
    51. }
    52. });
    53. </script>