当前位置:Gxlcms > JavaScript > 如何理解Vue的v-model指令的使用方法

如何理解Vue的v-model指令的使用方法

时间:2021-07-01 10:21:17 帮助过:16人阅读

本文主要讲解v-model指令,主要包括HTML元素的v-model和组件上的v-model两种,用四个简单的案例介绍v-model的使用。

案例一:HTML元素的v-model -输入框(text)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>v-model指令</title>
  6. <script src="https://cdn.bootcss.com/vue/2.3.4/vue.js"></script>
  7. </head>
  8. <body>
  9. <div id="app4">
  10. {{price}}<br>
  11. <input v-model="price"><!-- 下行注释的语法糖 -->
  12. <!-- <input :value="price" @input="price = $event.target.value"> -->
  13. </div>
  14. <script>
  15. new Vue({
  16. el: '#app4',
  17. data: {
  18. price: '20'
  19. }
  20. });
  21. </script>
  22. </body>
  23. </html>

案例二: 定制组件的v-model - 输入框(text)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>v-model指令</title>
  6. <script src="https://cdn.bootcss.com/vue/2.3.4/vue.js"></script>
  7. </head>
  8. <body>
  9. <div id="app3">
  10. {{price}}
  11. <my-input v-model="price"></my-input><!-- 下行注释的语法糖 -->
  12. <!-- <my-input :value="price" @input="val => {price = val}"></my-input> -->
  13. </div>
  14. <script>
  15. Vue.component('my-input', {
  16. template: '<div></span><input type="text" ref="input" :value="value" @input="doThis"/></div>',
  17. props: {
  18. value: String
  19. },
  20. methods: {
  21. doThis() {
  22. this.$emit('input', this.$refs.input.value);
  23. }
  24. }
  25. });
  26. new Vue({
  27. el: '#app3',
  28. data: {
  29. price: '10'
  30. }
  31. });
  32. </script>
  33. </body>
  34. </html>

案例三: 定制组件的v-model - 复选框(checkbox) - 2.2.0 新增

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>v-model指令</title>
  6. <script src="https://cdn.bootcss.com/vue/2.3.4/vue.js"></script>
  7. </head>
  8. <body>
  9. <div id="app2">
  10. {{fruit}}<!-- 观测数据变化 -->
  11. <my-checkbox v-model="fruit.apple" value="apple"></my-checkbox><!-- 下行注释的语法糖 -->
  12. <!-- <my-checkbox :checked="fruit.apple" @change="val => {fruit.apple = val}" value="apple"></my-checkbox> -->
  13. <my-checkbox v-model="fruit.peach" value="peach"></my-checkbox><!-- 下行注释的语法糖 -->
  14. <!-- <my-checkbox :checked="fruit.peach" @change="val => {fruit.peach = val}" value="peach"></my-checkbox> -->
  15. </div>
  16. <script>
  17. Vue.component('my-checkbox', {
  18. template: '<div><span>{{value}}</span><input type="checkbox" :checked="checked" @change="doThis" :value="value"/></div>',
  19. model: {
  20. prop: 'checked',
  21. event: 'change'
  22. },
  23. props: {
  24. checked: Boolean,
  25. value: String
  26. },
  27. methods: {
  28. doThis() {
  29. this.$emit('change', !this.checked);
  30. }
  31. }
  32. });
  33. new Vue({
  34. el: '#app2',
  35. data: {
  36. fruit: {//数据
  37. apple: true,
  38. peach: false
  39. }
  40. }
  41. });
  42. </script>
  43. </body>
  44. </html>

案例四: 定制组件的v-model - 单选按钮(radio) -2.2.0 新增

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>v-model指令</title>
  6. <script src="https://cdn.bootcss.com/vue/2.3.4/vue.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. {{fruit}}<!-- 观测数据变化 -->
  11. <my-radio v-model="fruit" value="apple" name="myFruit"></my-radio><!-- 下行注释的语法糖 -->
  12. <!-- <my-radio :checked="fruit" @change="val => {fruit = val}" value="apple"></my-radio> -->
  13. <my-radio v-model="fruit" value="peach" name="myFruit"></my-radio><!-- 下行注释的语法糖 -->
  14. <!-- <my-radio :checked="fruit" @change="val => {fruit = val}" value="peach"></my-radio> -->
  15. </div>
  16. <script>
  17. Vue.component('my-radio', {
  18. template: '<div><span>{{value}}</span><input :name="name" type="radio" ref="radio" :checked="checked===value" @change="doThis" :value="value"/></div>',
  19. model: {
  20. prop: 'checked',
  21. event: 'change'
  22. },
  23. props: {
  24. checked: String,
  25. value: String,
  26. name: String
  27. },
  28. methods: {
  29. doThis() {
  30. this.$emit('change', this.$refs.radio.value);
  31. }
  32. }
  33. });
  34. new Vue({
  35. el: '#app',
  36. data: {
  37. fruit: 'peach'//数据
  38. }
  39. });
  40. </script>
  41. </body>
  42. </html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

人气教程排行