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


Posted in Javascript onJuly 19, 2018

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

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

<!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>v-model指令</title>
    <script src="https://cdn.bootcss.com/vue/2.3.4/vue.js"></script>
  </head>
  <body>
    <div id="app4">
      {{price}}<br>
      <input v-model="price"><!-- 下行注释的语法糖 -->
      <!-- <input :value="price" @input="price = $event.target.value"> -->
    </div>
    <script>
      new Vue({
        el: '#app4',
        data: {
          price: '20'
        }
      });
    </script>
  </body>
</html>

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

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

<!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>v-model指令</title>
    <script src="https://cdn.bootcss.com/vue/2.3.4/vue.js"></script>
  </head>
  <body>
    <div id="app3">
      {{price}}
      <my-input v-model="price"></my-input><!-- 下行注释的语法糖 -->
      <!-- <my-input :value="price" @input="val => {price = val}"></my-input> -->
    </div>
    <script>
      Vue.component('my-input', {
        template: '<div></span><input type="text" ref="input" :value="value" @input="doThis"/></div>',
        props: {
          value: String
        },
        methods: {
          doThis() {
            this.$emit('input', this.$refs.input.value);
          }
        }
      });
      new Vue({
        el: '#app3',
        data: {
          price: '10'
        }
      });
    </script>
  </body>
</html>

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

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

<!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>v-model指令</title>
      <script src="https://cdn.bootcss.com/vue/2.3.4/vue.js"></script>
    </head>
    <body>
      <div id="app2">
        {{fruit}}<!-- 观测数据变化 -->
        <my-checkbox v-model="fruit.apple" value="apple"></my-checkbox><!-- 下行注释的语法糖 -->
        <!-- <my-checkbox :checked="fruit.apple" @change="val => {fruit.apple = val}" value="apple"></my-checkbox> -->
      
        <my-checkbox v-model="fruit.peach" value="peach"></my-checkbox><!-- 下行注释的语法糖 -->
        <!-- <my-checkbox :checked="fruit.peach" @change="val => {fruit.peach = val}" value="peach"></my-checkbox> -->
      </div>
      <script>
        Vue.component('my-checkbox', {
          template: '<div><span>{{value}}</span><input type="checkbox" :checked="checked" @change="doThis" :value="value"/></div>',
          model: {
            prop: 'checked',
            event: 'change'
          },
          props: {
            checked: Boolean,
            value: String
          },
          methods: {
            doThis() {
              this.$emit('change', !this.checked);
            }
          }
        });
        new Vue({
          el: '#app2',
          data: {
            fruit: {//数据
              apple: true,
              peach: false
            }
          }
        });
      </script>
    </body>
  </html>

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

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

<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>v-model指令</title>
  <script src="https://cdn.bootcss.com/vue/2.3.4/vue.js"></script>
</head>
<body>
  <div id="app">
    {{fruit}}<!-- 观测数据变化 -->
    <my-radio v-model="fruit" value="apple" name="myFruit"></my-radio><!-- 下行注释的语法糖 -->
    <!-- <my-radio :checked="fruit" @change="val => {fruit = val}" value="apple"></my-radio> -->
    
    <my-radio v-model="fruit" value="peach" name="myFruit"></my-radio><!-- 下行注释的语法糖 -->
    <!-- <my-radio :checked="fruit" @change="val => {fruit = val}" value="peach"></my-radio> -->
  </div>
  <script>
    Vue.component('my-radio', {
      template: '<div><span>{{value}}</span><input :name="name" type="radio" ref="radio" :checked="checked===value" @change="doThis" :value="value"/></div>',
      model: {
        prop: 'checked',
        event: 'change'
      },
      props: {
        checked: String,
        value: String,
        name: String
      },
      methods: {
        doThis() {
          this.$emit('change', this.$refs.radio.value);
        }
      }
    });
    new Vue({
      el: '#app',
      data: {
        fruit: 'peach'//数据
      }
    });
  </script>
</body>
</html>

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

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

Javascript 相关文章推荐
javasciprt下jquery函数$.post执行无响应的解决方法
Mar 13 Javascript
js图片延迟技术一般的思路与示例
Mar 20 Javascript
js游戏人物上下左右跑步效果代码分享
Aug 28 Javascript
AngularJS实现元素显示和隐藏的几个案例
Dec 09 Javascript
谈谈我对JavaScript DOM事件的理解
Dec 18 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
Jun 17 Javascript
jquery的checkbox,radio,select等方法小结
Aug 30 Javascript
原生JS获取元素集合的子元素宽度实例
Dec 14 Javascript
AngularJS表单提交实例详解
Feb 18 Javascript
AngularJS 防止页面闪烁的方法
Mar 09 Javascript
jQuery实现的手风琴侧边菜单效果
Mar 29 jQuery
Node.js中读取TXT文件内容fs.readFile()用法
Oct 10 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
Jul 19 #Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 #Javascript
浅谈Vue初学之props的驼峰命名
Jul 19 #Javascript
解决vue-cli3 使用子目录部署问题
Jul 19 #Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
Jul 19 #Javascript
微信小程序实现分享到朋友圈功能
Jul 19 #Javascript
微信小程序实现自定义加载图标功能
Jul 19 #Javascript
You might like
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
PHP多例模式介绍
2013/06/24 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
深入理解PHP内核(一)
2015/11/10 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
2019/02/14 PHP
js实例属性和原型属性示例详解
2014/11/23 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
vue实现单选和多选功能
2017/08/11 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
Python文件操作基本流程代码实例
2017/12/11 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
python将数组n等分的实例
2019/12/02 Python
python与pycharm有何区别
2020/07/01 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
工作自荐信
2013/12/11 职场文书
世界地球日活动总结
2015/02/09 职场文书
独生子女证明范本
2015/06/19 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
MYSQL 表的全面总结
2021/11/11 MySQL