如何理解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 相关文章推荐
jquery ajax 检测用户注册时用户名是否存在
Nov 03 Javascript
javascript奇异的arguments分析
Oct 20 Javascript
拥抱模块化的JavaScript
Mar 07 Javascript
用JavaScript修改CSS属性的代码
May 06 Javascript
JavaScript中的apply和call函数详解
Jul 20 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
Oct 11 Javascript
浅谈Jquery为元素绑定事件
Apr 27 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
Nov 30 Javascript
ng2学习笔记之bootstrap中的component使用教程
Mar 09 Javascript
JS 设置Cookie 有效期 检测cookie
Jun 15 Javascript
微信小程序—setTimeOut定时器的问题及解决
Jul 26 Javascript
解决layer弹出层中表单不起作用的问题
Sep 09 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将数据库导出成excel的方法
2010/05/07 PHP
PHP速成大法
2015/01/30 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
Python字符串中查找子串小技巧
2015/04/10 Python
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python3对接mysql数据库实例详解
2019/04/30 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
最新党员思想汇报
2014/01/01 职场文书
员工安全生产承诺书
2014/05/22 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
员工工作能力评语
2014/12/31 职场文书
自主招生专家推荐信
2015/03/26 职场文书
贫困生证明范文
2015/06/16 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle