vue双向数据绑定指令v-model

2023-11-01

vue双向数据绑定指令v-model

v-model,被称为双向数据绑定指令,就是Vue实例对数据进行修改,页面会立即感知,相反页面对数据进行修改,Vue内部也会立即感知。

v-model 是vue中唯一实现双向数据绑定的指令。

在这里插入图片描述

  • v-bind(单向)数据绑定,Vue实例修改数据,页面会感知到,相反页面修改数据Vue实例不能感知。
  • v-model(双向)数据绑定,页面修改数据,Vue实例会感知到,Vue实例修改数据,页面也会感知到。

基本使用

语法

<标签 v-model="data成员"></标签>

注意

  1. v-model只针对value属性可以绑定,因此经常用在form表单标签中,例如input(输入框、单选按钮、复选框)/select(下拉列表)/textarea(文本域),相反div、p标签不能用。
  2. v-model只能绑定data成员,不能设置其他表达式,否则错误。
  3. v-model绑定的成员需提前在data中声明好。

示例代码

 <div id="app">
    <p>{{ city }}</p>
    <p><input type="text" :value="city"></p>
    <p><input type="text" v-model="city"></p>
  </div>
  <script src="./vue.js"></script>

  <script>
    var vm = new Vue({
      el:'#app',
      data:{
        city:'北京'
      },
    })
  </script>
  • v-model对应的city发生变化后,其他的{{ }} 和 :value的值也会发生变化。

响应式

在这里插入图片描述

v-model数据双向绑定步骤

  1. 页面初始加载,vue实例的data数据渲染给页面的div容器。
  2. 页面通过v-model修改绑定数据,修改的信息会直接反馈给vue内部的data数据。
  3. vue的data数据发生变化,页面上(也包括Vue实例本身)用到该数据的地方会重新编译渲染。
    • 2和3步骤在条件满足情况下会重复执行。

响应式

vue实例的data数据如果发生变化,那么页面上(或Vue实例内部其他场合)用到该数据的地方会重新编译执行,这样就把更新后的内容显示出来了,这个过程就是“响应式”,即上面步骤3。

  • 如果Vue实例内部对变化的数据有使用,也会同步更新编译执行。

注意:响应式是Vue中非常重要的机制。

v-model简易实现原理

给input输入框中定义oninput事件,在该事件中把用户输入的信息都给随时获得到,并对data成员进行赋值,

data成员变化了,页面上用到数据的地方就重新渲染,达成简易双向绑定的效果。

oninput:是事件,可以随时感知输入框输入的信息。

具体设置

  <div id="app">
    <h2>v-model简易原理</h2>
    <p>{{city}}</p>
    <p><input type="text" :value="city"></p>
    <hr />
    <!-- 事件@xxx="方法名称/js语句" -->
    <!-- $event:在vue的事件被绑定元素的行内部,代表事件对象 -->
    <p><input type="text" :value="city" @input="city = $event.target.value"></p>
      
    <p><input type="text" :value="city" @input="feel"></p>
  </div>

  <script src="./vue.js"></script>
  <script>
    var vm = new Vue({
      el:'#app',
      data:{
        city:'北京'
      },
      methods:{
        feel(evt){
          // console.log(evt)  // InputEvent输入键盘事件对象
          // evt.target: 触发当前事件的元素节点dom对象(类似document.getElementById()的返回结果)
          // console.dir(evt.target)
          // console.log(evt.target.value)  // evt.target.value 获得输入框当前输入的信息
          // 把输入框已经输入的信息赋予给city
          this.city = evt.target.value
        }
      }
    })
  </script>

注意

  1. 事件声明没有小括号(),第一个形参就是 事件对象。
  2. 在元素行内事件驱动中可以直接使用$event,其也是事件对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue双向数据绑定指令v-model 的相关文章

  • SpringBoot2.7.2 版本配置swagger3的方法及教程

    原因 对SpringBoot2 7 2版本 swagger2 x版本不再适用 所以就选择了swagger3版本 但是相较于swagger2版本 swagger3版本更加麻烦 具体教程如下 方法 第一步 引入依赖
  • 【计算机毕业设计】java ssm在线学习系统 在线学习平台

    毕设帮助 源码交流 技术解答 见文末 一 前言 以前 我们的在线学习主要是通过面对面的讲授 这样 有很多优势 教师可以与学生直接交流 但是也有许多不尽人意的地方 课堂在线学习很大程度上受到时间和空间的限制 浪费了在线学习资源同时对于学生的进
  • 【算法题目】Leetcode算法题思路:两数相加

    在LeetCode上刷了一题比较基础的算法题 一开始也能解出来 不过在解题过程中用了比较多的if判断 看起来代码比较差 经过思考和改进把原来的算法优化了 题目 给出两个 非空 的链表用来表示两个非负的整数 其中 它们各自的位数是按照 逆序

随机推荐

  • 数据结构(C#)-- 贪心算法解决背包问题

    using System using System Collections Generic using System Linq using System Text using System Data using System Collect
  • 计算机的基本组成及工作原理

    计算机的基本组成及工作原理 1 3 1 计算机系统的组成 计算机系统是由硬件系统和软件系统两大部分组成 这一节将分别介绍计算机硬件系统和软件系统 计算机硬件是构成计算机系统各功能部件的集合 是由电子 机械和光电元件组成的各种计算机部件和设备
  • pytorch: Pool 和 AdaptivePool 的区别和使用方法

    在 pytorch 中 池化层 Pooling 有两种操作方式 一种是手动设计 另一种是自适应池化 一 手动设计 池化层操作 一般有最大值 max 池化和均值 avg 池化 而根据尺寸又有一维 二维 三维 所以 手动设计的池化层有6种函数
  • GitHub加速教程

    转载 GitHub 加速教程 GitHub Hosts 仓库提供最新的GitHub hosts地址 你可以自行配置hosts 但是最佳实践是使用 SwitchHosts 管理你的 hosts 可以阅读文章 SwitchHosts 还能这样管
  • 在Java中尽量使用包装类Integer而不使用int

    1 在MySQL中没有给字段赋值默认为null 当你从数据库中查出来也是null 如果该字段在对应的Java代码中是int类型 null不能对应int类型 因为int代表的是基本数据类型 只能是基本的数字 2 实体类的属性你可以给它赋值也可
  • 三分钟教你学Git(二十一) - 复制连续多个提交

    有时候我们有一个分支A 里边包含了提交A1 gt A2 gt A3 gt A4 gt A5等 然后我们又有一个分支B 里边包含了提交A1 gt A2 gt B1 gt B2 gt B3 现在我们想把分支A中的A3 A4 A5版本复制到分支B
  • vue3项目实战+element-plus

    记录自己搭建前端项目的学习过程和开发过程 希望一起学习进步 采用Vue3 element plus axios vue router sass 目前刚开始是用到了这些 随着开发慢慢更新 npm是比较慢的 所以我用的是pnpm 安装指令 np
  • 播放raw下的音乐文件

    在开发的过程中 我们需要一些不需要用户改变的音乐或图像文件 这些文件存在安卓res raw文件夹中 下面就介绍如何播放res raw文件夹中的乐 1 在res目录下新建一个raw文件夹 2 界面上 xml文件中有一个按钮控件 当我们点击按钮
  • 迭代器模式c++实现

    参考书籍 Head First设计模式 需求场景 餐馆和咖啡馆的菜单分别是用数组和容器 vector 存储的 有一天餐馆和咖啡店合并了想要打印菜单 必须实现两个不同的遍历 数组用sizeof计算长度 用 取元素 容器用size取长度 用at
  • 第二阶段 归纳总结

    总结归纳 文章目录 总结归纳 计算机理论基础为 的童鞋 一二阶段是基础 三四阶段是应用 1 Linux操作系统使用 2 数据机构 3 IO网络编程 4 并发编程 5 正则表达式 6 Mysql数据库 7 git使用 8 项目综合 聊天室 f
  • 2023年十大无代码测试工具 每个测试人员都应该知道

    编码 跟很多技能一样 需要多年的实践才能熟练掌握 让测试人员编写一堆代码组成测试程序 修复程序中的错误 并在几周内完成大量工作很有难度 根据2019 2020年世界质量报告 在敏捷项目中应用自动化测试的最大的问题就是很多测试人员缺乏专业编程
  • 双因素方差分析 matlab,MATLAB的双因素有交互效应的方差分析

    二 MATLAB的双因素有交互效应的方差分析在两个因素的试验中 不但每一个因素单独对试验结果起作用 往往两个因素的不同水平组合还会产生一定的合作效应 在方差分析中称为交互效应 交互效应在对因素方差分析中 通常是当成一个新因素来处理 设因素A
  • Django学习

    创建项目 django admin startproject mysite 目录结构如下 查看帮助 终端页面输入以下命令 django admin help django admin help Type django admin help
  • 缺陷检测数据集

    缺陷检测数据集 东北大学钢材表面缺陷数据集 铁质缺陷 东北大学钢材表面缺陷数据集 简介 该数据集是东北大学宋克臣团队制作而成 是钢材表面缺陷数据集 共有1800张图片 包含六种类型共有六种缺陷 crazing inclusion patch
  • Vue中路由vue-router的使用

    基本使用 1 安装vue router 命令 npm i vue router 2 应用插件 import VueRouter from vue router Vue use VueRouter 3 编写router配置项 import V
  • python中判断 nan 的几种方式

    float NaN 判断 float NaN float NaN pandas中的 nan 判断 pd isnull df1 df1 是DataFrame对象 也可以是Series对象 pd isna 直接判断DataFrame某一列是否为
  • Springboot自定义ThreadPoolTaskExecutor线程池多线程并发执行异步方法

    1 背景 当前因为工作需求 要发送大量Http请求 经过实践遍历发送需要6小时才能发送完毕 如果单线程发送请求会导致主线程阻塞 就会存在以下问题 前端用户等待响应时间过长 无法进行下一步操作 不利于用户操作系统 响应时间过长超过Tomcat
  • 内存分页

    内存分页 p Description 内存分页 p param records 待分页的数据 param pageNum 当前页码 param pageSize 每页显示的条数 return 分页之后的数据 public static
  • Git——C站最详细的Git教程,一篇学会Git(window\linux通用)

    Git C站最详细的Git教程 一篇学会Git window linux通用 文章目录 Git C站最详细的Git教程 一篇学会Git window linux通用 Git简介 Git 作用 为什么要进行源代码管理 Git的诞生 Git管理
  • vue双向数据绑定指令v-model

    vue双向数据绑定指令v model v model 被称为双向数据绑定指令 就是Vue实例对数据进行修改 页面会立即感知 相反页面对数据进行修改 Vue内部也会立即感知 v model 是vue中唯一实现双向数据绑定的指令 v bind