如何理解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 相关文章推荐
可以将word转成html的js代码
Apr 11 Javascript
jQuery ready函数滥用分析
Feb 16 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
Jan 21 Javascript
javascript中HTMLDOM操作详解
Dec 11 Javascript
Jquery使用小技巧汇总
Dec 29 Javascript
基于JavaScript实现跳转提示页面
Sep 24 Javascript
react.js 翻页插件实例代码
Jan 19 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
Mar 01 Javascript
详解Angular5路由传值方式及其相关问题
Apr 28 Javascript
Webpack中publicPath路径问题详解
May 03 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
Nov 14 Javascript
vue 二维码长按保存和复制内容操作
Sep 22 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
博士208HAF收音机实习报告
2021/03/02 无线电
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
表单JS弹出填写提示效果代码
2011/04/16 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
Python的Flask开发框架简单上手笔记
2015/11/16 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
怎样写好自我鉴定
2013/12/04 职场文书
体育教师求职信
2014/06/30 职场文书
学校联谊协议书
2014/09/16 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers