【vue核心技术实战精讲】1.9 Vue指令之v-model双向数据绑定

news2024/12/28 5:24:08

文章目录

  • 前言
  • 本节内容
    • 1、`v-model`
    • 2、`总结`
      • v-model 双向的数据绑定
        • 双向数据流(绑定)
      • v-bind 和 v-model 的区别?
    • 3-1、`实战` `<input>`
      • A、 `输入框 type="text"`
        • 示例
        • 效果
      • B、 `单选按钮 type="radio"`
        • 示例
        • 效果
      • C、 `复选框 type="checkbox" - 单个复选框,绑定布尔值`
        • 示例
        • 效果
      • D、 `复选框 type="checkbox" - 多个复选框,绑定到数组`
        • 示例
        • 效果
    • 3-2、`实战` `<select>`
        • 示例 1:绑定数组
        • 效果
        • 示例 2:用 `v-for` 渲染的动态选项
        • 效果
    • 3-3、`实战 <textarea>`
        • 示例
        • 效果
    • 4、`修饰符`
      • `.lazy`
      • `.number`
      • `.trim`

前言

上节,我们学习了

  • Vue指令之v-on事件处理、事件修饰符、v-for列表渲染 点击进入上一节

本节内容

  • Vue指令之v-model双向数据绑定

1、v-model

  • 预期:随表单控件类型不同而不同

  • 限制

    • <input>
    • <select>
    • <textarea>
    • components
  • 修饰符

    • .lazy - 取代 input 监听 change 事件
    • .number - 输入字符串转为有效的数字
    • .trim - 输入首尾空格过滤
  • 用法

    在表单控件或者组件上创建双向绑定。细节请看下面的教程链接。

  • 参考

    • 表单控件绑定
    • 组件 - 在输入组件上使用自定义事件

2、总结

v-model 双向的数据绑定

双向数据流(绑定)
  • 页⾯面改变影响内存(js)
  • 内存(js)改变影响⻚页⾯面

v-bind 和 v-model 的区别?

  • input v-model=“name”
    • 双向数据绑定 ⻚页⾯面对于input的value改变,能影响内存中name变量量
    • 内存js改变name的值,会影响⻚页⾯面重新渲染最新值
  • input :value=“name”
    • 单向数据绑定 内存改变影响⻚页⾯面改变
  • v-model: 其的改变影响其他 v-bind: 其的改变不不影响其他
  • v-bind就是对属性的简单赋值,当内存中值改变,还是会触发重新渲染

3-1、实战 <input>

A、 输入框 type="text"

示例
<body>
    <div id='app'>
        <p>{{msg}}</p>
        <input type="text" v-model='msg'>
    </div>
    <script src="../vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: 'input',
            }
        })
    </script>
</body>
效果

B、 单选按钮 type="radio"

示例
    <div id='app'>
        <!-- for="one" 表示绑定id='one'标签-->
        <div id="example-4">
            <label>单选按钮</label>
            <br>
            <input type="radio" id="one" value="One" v-model="picked">
            <label for="one">One</label>
            <br>
            <input type="radio" id="two" value="Two" v-model="picked">
            <label for="two">Two</label>
            <br>
            <span>Picked: {{ picked }}</span>
        </div>

    </div>
    <script src="../vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: 'input',
                checked: true,
                picked: 'One',
                checkedNames: ['Jack','input']
            }
        })
    </script>
效果

C、 复选框 type="checkbox" - 单个复选框,绑定布尔值

示例
    <div id='app'>
        <!-- for="one" 表示绑定id='one'标签-->
        <div id="example-4">
            <label>单个复选框,绑定到布尔值:</label>
            <br>
            <input type="checkbox" id="checkbox" v-model="checked">
            <label for="checkbox">{{ checked }}</label>
        </div>

    </div>
    <script src="../vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: 'input',
                checked: true,
                picked: 'One',
                checkedNames: ['Jack','input']
            }
        })
    </script>
效果

D、 复选框 type="checkbox" - 多个复选框,绑定到数组

示例
    <div id='app'>
        <!-- for="one" 表示绑定id='one'标签-->
        <div id="example-4">
            <label>多个复选框,绑定到同一个数组</label>
            <br>
            <input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
            <label for="jack">Jack</label>
            
            <input type="checkbox" id="john" value="John" v-model="checkedNames">
            <label for="john">John</label>
            
            <input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
            <label for="mike">Mike</label>
            <br>
            <span>Checked names: {{ checkedNames }}</span>
        </div>

    </div>
    <script src="../vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: 'input',
                checked: true,
                picked: 'One',
                checkedNames: ['Jack','input']
            }
        })
    </script>
效果

3-2、实战 <select>

示例 1:绑定数组
        <label>下拉框(选择框)</label>
        <br>
        <select v-model="selected">
            <option disabled value="">请选择</option>
            <option>A</option>
            <option>B</option>
            <option>C</option>
        </select>

        <span>Selected: {{ selected }}</span>
        <br>
        
    new Vue({
        el: '#app',
        data: {
            selected: 'D'
        }
    })
效果
示例 2:用 v-for 渲染的动态选项
<select v-model="selected">
  <option v-for="option in options" v-bind:value="option.value">
    {{ option.text }}
  </option>
</select>
<span>Selected: {{ selected }}</span>
        
new Vue({
  el: '...',
  data: {
    selected: 'A',
    options: [
      { text: 'One', value: 'A' },
      { text: 'Two', value: 'B' },
      { text: 'Three', value: 'C' }
    ]
  }
})
效果

3-3、实战 <textarea>

示例
        <span>Multiline message is:</span>
        <p style="white-space: pre-line;">{{ message }}</p>
        <br>
        <textarea v-model="message" rows="8" cols="50"></textarea>

    new Vue({
        el: '#app',
        data: {
            message:"1\n" + "2\n" + "3\n" + "4"
        }
    })
效果

4、修饰符


.lazy

在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。你可以添加 lazy 修饰符,从而转为在 change 事件_之后_进行同步:

<!-- 在“change”时而非“input”时更新 -->
<input v-model.lazy="msg">

.number

如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:

<input v-model.number="age" type="number">

这通常很有用,因为即使在 type="number" 时,HTML 输入元素的值也总会返回字符串。如果这个值无法被 parseFloat() 解析,则会返回原始的值。

.trim

如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:

<input v-model.trim="msg">

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1553284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

|行业洞察·医药|《医药行业年终总结报告:政策篇-143页》

报告各部分的详细解读&#xff1a; 1. 政策概览 政策导读&#xff1a;2023年作为“十四五”发展时期的第三年&#xff0c;国家发布了许多关键性文件&#xff0c;对医药行业的采购、医保、医疗、医药等方面提出了明确的目标和规划。政策发布情况&#xff1a;截至12月19日&…

[LeetCode]516. 最长回文子序列[记忆化搜索解法详解]

最长回文子序列 LeetCode 原题链接 题目 给你一个字符串 s &#xff0c;找出其中最长的回文子序列&#xff0c;并返回该序列的长度。 子序列定义为&#xff1a;不改变剩余字符顺序的情况下&#xff0c;删除某些字符或者不删除任何字符形成的一个序列。 示例 1&#xff1a…

苹果应用商店上架工具的最新趋势与未来发展展望

摘要 移动应用app上架是开发者关注的重要环节&#xff0c;但常常会面临审核不通过等问题。为帮助开发者顺利完成上架工作&#xff0c;各种辅助工具应运而生。本文探讨移动应用app上架原理、常见辅助工具功能及其作用&#xff0c;最终指出合理使用工具的重要性。 引言 移动应…

YonBuilder移动开发基础——友开发App与自定义Loader

概述 在使用 YonBuilder移动开发 技术进行 App 项目开发时&#xff0c;我们需要使用YonStuido开发工具的 WIFI同步 功能进行项目代码的真机调试&#xff0c;友开发App 与 自定义Loader 都支持 WIFI同步 功能&#xff0c;那么两款 App 软件到底有什么区别&#xff0c;在开发过程…

C语言 | qsort()函数使用

目录&#xff1a; 1.qsort介绍 2.使⽤qsort函数 排序 整型数据 3.使⽤qsort函数 排序 结构体数据 4. qsort函数的模拟实现冒泡排序 qsort()函数 是一个 C语言编译器函数库自带的排序函数&#xff0c; 它可以对指定数组&#xff08;包括字符串&#xff0c;二维数组&#x…

STM32CubeMX学习笔记28---FreeRTOS软件定时器

一、软件定时器简介 1 、基本概念 定时器&#xff0c;是指从指定的时刻开始&#xff0c;经过一个指定时间&#xff0c;然后触发一个超时事件&#xff0c;用户 可以自定义定时器的周期与频率。类似生活中的闹钟&#xff0c;我们可以设置闹钟每天什么时候响&#xff0c; 还能设置…

【车体坐标系与世界坐标系的互相转换】能够一眼看懂的知识点!!!

本文讲解车体坐标系与世界坐标系互相转换的数学推导&#xff0c;如下图所示 将waypoint坐标从车体坐标系转换到世界坐标系&#xff1a; [ x ′ y ′ z ′ ] [ x y z ] [ cos ⁡ θ sin ⁡ θ 0 − sin ⁡ θ cos ⁡ θ 0 0 0 1 ] \left[\begin{array}{lll} x^{\prime} & …

产品经理的自我修养

点击下载《产品经理的自我修养》 1. 前言 在产品领域取得成功的关键在于持续的激情。只有保持热情不减,我们才能克服各种困难,打造出卓越的产品。 如果你真心渴望追求产品之路,我强烈建议你立即行动起来,亲自参与实际的产品创作。无论是建立一个网站、创建一个社群,还是…

axios发送get请求但参数中有数组导致请求路径多出了“[]“的处理办法

一、情况 使用axios发送get请求携带了数组参数时&#xff0c;请求路径中就会多出[]字符&#xff0c;而在后端也会报错 二、解决办法 1、安装qs 当前项目的命令行中安装 npm install qs2、引入qs库(使用qs库来将参数对象转换为字符串) // 全局 import qs from qs Vue.proto…

WPF中获取TreeView以及ListView获取其本身滚动条进行滚动

实现自行调节scoll滚动的位置(可相应获取任何控件中的内部滚动条) TreeView:TreeViewAutomationPeer lvap new TreeViewAutomationPeer(treeView); var svap lvap.GetPattern(PatternInterface.Scroll) as ScrollViewerAutomationPeer; var scroll svap.Owner as ScrollVie…

免费翻译pdf格式论文

进入谷歌翻译网址https://translate.google.com/?slauto&tlzh-CN&opdocs 将需要全文翻译的pdf放进去 选择英文到中文&#xff0c;然后点击翻译 可以选择打开译文或者下载译文&#xff0c;下载译文会下载到电脑上&#xff0c;打开译文会在浏览器打开。

华为数通方向HCIP-DataCom H12-821题库(多选题:221-240)

第221题 下面哪些路由协议支持通过命令配置发布缺省路由? A、OSPF B、IGMP C、ISIS D、BGP 【正确答案】ACD 【答案解析】 第222题 在route-policy中,能够用于apply子句的BGP属性有哪些? A、Local-Preference B. AS_Path C、Tag D、MED 【正确答案】ABD 【答案解析】 第22…

机器学习之决策树现成的模型使用

目录 须知 DecisionTreeClassifier sklearn.tree.plot_tree cost_complexity_pruning_path(X_train, y_train) CART分类树算法 基尼指数 分类树的构建思想 对于离散的数据 对于连续值 剪枝策略 剪枝是什么 剪枝的分类 预剪枝 后剪枝 后剪枝策略体现之威斯康辛州乳…

Redis 特性,为什么要用Redis,Redis到底是多线程还是单线程

一、Redis介绍 Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的&#xff0c;使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 二、特性(为什么要用Redis&#x…

Docker 夺命连环 15 问

目录 什么是Docker&#xff1f; Docker的应用场景有哪些&#xff1f; Docker的优点有哪些&#xff1f; Docker与虚拟机的区别是什么&#xff1f; Docker的三大核心是什么&#xff1f; 如何快速安装Docker&#xff1f; 如何修改Docker的存储位置&#xff1f; Docker镜像常…

护眼大路灯智商税吗?五款最佳护眼落地灯分享!

大路灯能够提供更加舒适健康的光线&#xff0c;而且大路灯还提供许多能够提高使用便捷度的大路灯&#xff0c;尤其是对于学生党以及上班族来说&#xff0c;大路灯是一款很好的用眼照明小帮手。然而&#xff0c;对于护眼大路灯智商税吗这个问题&#xff0c;很冥想不是&#xff0…

四川易点慧电子商务抖音小店:前景无忧,创新引领未来零售风潮

在数字经济高速发展的今天&#xff0c;电子商务已成为推动经济增长的重要引擎。四川易点慧电子商务有限公司紧跟时代步伐&#xff0c;积极布局抖音小店&#xff0c;展现出强劲的发展势头和广阔的前景。 抖音小店作为抖音平台上的重要商业生态&#xff0c;凭借其庞大的用户群体和…

jira安装与配置

1. 环境准备 环境要求 1) JDK1.8以上环境配置 2) Mysql数据库5.7.13 3) Jira版本7及破解包 1.1 JDK1.8安装配置 1) 首先下载 JDK1.8&#xff0c; - 网址&#xff1a;https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html - windows64 版&am…

基于Spring Boot 3 + Spring Security6 + JWT + Redis实现登录、token身份认证

基于Spring Boot3实现Spring Security6 JWT Redis实现登录、token身份认证。 用户从数据库中获取。使用RESTFul风格的APi进行登录。使用JWT生成token。使用Redis进行登录过期判断。所有的工具类和数据结构在源码中都有。 系列文章指路&#x1f449; 系列文章-基于Vue3创建前端…

Vidmore Video Fix for Mac 视频修复工具

Vidmore Video Fix for Mac是一款功能强大且易于使用的视频修复工具&#xff0c;专为Mac用户设计。它凭借先进的视频修复技术&#xff0c;能够帮助用户解决各种视频问题&#xff0c;如视频文件损坏、无法播放、格式不支持等。 软件下载&#xff1a;Vidmore Video Fix for Mac v…