如何理解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 相关文章推荐
javascript代码加载优化方法
Jan 30 Javascript
javascript jscroll模拟html元素滚动条
Dec 18 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
Aug 05 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
Mar 11 Javascript
JavaScript中instanceof运算符的使用示例
Jun 08 Javascript
angularjs使用directive实现分页组件的示例
Feb 07 Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 Javascript
如何基于JavaScript判断图片是否加载完成
Dec 28 Javascript
基于vue-draggable 实现三级拖动排序效果
Jan 10 Javascript
微信小程序利用button控制条件标签的变量问题
Mar 15 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 jQuery
微信小程序开发数据缓存基础知识辨析及运用实例详解
Nov 06 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
一个MYSQL操作类
2006/11/16 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
node.js基于express使用websocket的方法
2017/11/09 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
js实现简单的打印表格
2020/01/15 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
Python实现AI换脸功能
2020/04/10 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
模范教师事迹材料
2014/02/10 职场文书
法人代表证明书格式
2014/10/01 职场文书
创业计划书之冷饮店
2019/09/27 职场文书