如何理解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 相关文章推荐
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
Nov 05 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
Sep 21 Javascript
原生js实现shift/ctrl/alt按键的获取
Apr 08 Javascript
js中top的作用深入剖析
Mar 04 Javascript
jQuery中die()方法用法实例
Jan 19 Javascript
bootstrap IE8 兼容性处理
Mar 22 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
Sep 05 jQuery
vue配置多页面的实现方法
May 22 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
Dec 03 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 Javascript
vue使用nprogress加载路由进度条的方法
Jun 04 Javascript
React自定义hook的方法
Jun 25 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
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
javascript 变量作用域 代码分析
2009/06/26 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
js获取内联样式的方法
2015/01/27 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
Vue数组更新及过滤排序功能
2017/08/10 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
python+selenium开发环境搭建图文教程
2017/08/11 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
python实现代码审查自动回复消息
2021/02/01 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
2019年分享net面试的经历和题目
2016/08/07 面试题
计算机科学系职业生涯规划书
2014/03/08 职场文书
教师四风问题整改措施
2014/09/25 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
污染环境建议书
2015/09/14 职场文书
提档介绍信范文
2015/10/22 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
Java 多线程并发FutureTask
2022/06/28 Java/Android