本文主要内容:
【资料图】
v-model
v-for
v-if
v-show
重点:双向数据绑定,只能用于表单元素,或者用于自定义组件。
之前的文章里,我们通过v-bind,给<input>
标签绑定了data
对象里的name
属性。当data
里的name
的值发生改变时,<input>
标签里的内容会自动更新。
可我现在要做的是:我在<input>
标签里修改内容,要求data
里的name
的值自动更新。从而实现双向数据绑定。该怎么做呢?这就可以利用v-model
这个属性。
区别:
v-bind:只能实现数据的单向绑定,从 M 自动绑定到 V。
v-model:只有v-model
才能实现双向数据绑定。注意,v-model 后面不需要跟冒号,
注意:v-model 只能运用在表单元素中,或者用于自定义组件。常见的表单元素包括:input(radio, text, address, email....) 、select、checkbox 、textarea。
代码举例如下:
此时,便可实现我们刚刚要求的双向数据绑定的效果。
题目:现在两个输入框,用来做加减乘除,将运算的结果放在第三个输入框。
实现代码如下:
注意上方代码中的注释,可以了解下eval()
的用法。
注意,是类样式。
我们先来看下面这段代码:
上面的代码中,我们直接通过正常的方式,给<h1>
标签设置了两个 class 类的样式。代码抽取如下:
上面的效果,我们还可以用Vue来写。这就引入了本段要讲的方式。
方式一:直接传递一个数组。注意:这里的 class 需要使用 v-bind 做数据绑定。
代码如下:
代码抽取如下:
上方代码中,注意,数组里写的是字符串;如果不加单引号,就不是字符串了,而是变量。
上方代码的意思是,通过data中布尔值 flag 来判断:如果 flag 为 true,就给 h1 标签添加my-active
样式;否则,就不设置样式。
注意,三元表达式的格式不要写错了。
上面的写法二,可读性较差。于是有了写法三。
写法三:在数组中使用对象来代替三元表达式。
代码如下:
Vue中通过属性绑定为元素设置 style 行内样式
注意,是行内样式(即内联样式)。
写法一:直接在元素上通过 :style
的形式,书写样式对象。
例如:
写法二:将样式对象,定义到 data
中,并直接引用到 :style
中。
也就是说,把写法一的代码改进一下。代码如下:
写法三
写法二只用到了一组样式。如果想定义多组样式,可以用写法三。
写法三:在 :style
中通过数组,引用多个 data
上的样式对象。
代码如下:
v-for:for循环的四种使用方式
作用:根据数组中的元素遍历指定模板内容生成内容。
比如说,如果我想给一个ul
中的多个li
分别赋值1、2、3...。如果不用循环,就要挨个赋值:
效果:
为了实现上面的效果,如果我用v-for
进行赋值,代码就简洁很多了:
接下来,我们详细讲一下v-for
的用法。需要声明的是,Vue 1.0的写法和Vue 2.0的写法是不一样的。本文全部采用Vue 2.0的写法。
针对下面这样的数组:
将数组中的值赋给li:
将数组中的值和index赋给li:
效果如下:
方式二:对象数组的遍历
效果如下:
方式三:对象的遍历
针对下面这样的对象:
将上面的obj1
对象的数据赋值给li,写法如下:
效果如下:
in
后面还可以直接放数字。举例如下:
效果如下:
v-for中key的使用注意事项
注意:在 Vue 2.2.0+ 版本里,当在组件中使用 v-for 时,key 属性是必须要加上的。
这样做是因为:每次 for 循环的时候,通过指定 key 来标示当前循环这一项的唯一身份。
当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用 “就地复用” 策略。如果数据项的顺序被改变,Vue将不是移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。
为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。
key的类型只能是:string/number,而且要通过 v-bind 来指定。
代码举例:
作用:根据表达式的值的真假条件,来决定是否渲染元素,如果为false则不渲染(达到隐藏元素的目的),如果为true则渲染。
在切换时,元素和它的数据绑定会被销毁并重建。
举例如下:(点击按钮时,切换和隐藏盒子)
效果如下:
style="display:none"
属性)作用:根据表达式的真假条件,来切换元素的 display 属性。如果为false,则在元素上添加 display:none
属性;否则移除display:none
属性。
举例如下:(点击按钮时,切换和隐藏盒子)
我们直接把上一段代码中的v-if
改成v-show
就可以了:
效果如下:
v-if和v-show的区别
v-if
和v-show
都能够实现对一个元素的隐藏和显示操作。
区别:
v-if:每次都会重新添加/删除DOM元素,元素和它的数据绑定会被销毁并重建。
v-show:每次不会重新进行DOM的添加/删除操作,只是在这个元素上添加/移除style="display:none"
属性,表示节点的显示和隐藏。
优缺点:
v-if:有较高的切换性能消耗。这个很好理解,毕竟每次都要进行dom的添加/删除操作。
v-show:有较高的初始渲染消耗。也就是说,即使一开始v-show="false"
,该节点也会被创建,只是隐藏起来了。而v-if="false"
的节点,根本就不会被创建。
总结:
如果元素涉及到频繁的切换,最好不要使用 v-if, 而是推荐使用 v-show
如果元素可能永远也不会被显示出来被用户看到,则推荐使用 v-if
上一篇:让网络虚假新闻无所遁形-每日视点
下一篇:最后一页
5月29日,记者从濮阳市委营商环境办获悉,濮阳市营商环境促进会于近日正式成立并举行第一次会员大会。这是
假新闻、假主播层出不穷,给互联网用户带来困扰。
近年来,“大卫生、大健康”理念被摆在更加突出的位置。
前言本文主要内容:v-modelv-forv-ifv-showv-model:双向数据绑定重点:双向数据绑定,只能用于表单元素,
5月29日,四川凉山州会东县自来水有限责任公司发布消息,目前,受降雨量影响,会东县主要饮用水源进入枯水
5月29日,顶端新闻记者从洛阳市农业农村局了解到,应对持续阴雨天气对小麦收获造成的影响,该局出台六项举
➤➤2023天津和平热力采暖费线下在哪里缴费?收费中心办公地点:和平区宜昌道宜昌南里2号楼增1号(秋实万家
1、没特色,都同异 :荆门社区,荆门论坛,运等等。本文就为大家分享到这里,希望小伙伴们会喜欢。
音频解说一、陕西省渭南市天气预报1、合阳县气象台2023年05月30日04时59分发布大雾黄色预警信号。2、预计未来12
1、你是短发,做柔顺对头发伤害应该不像女生长发那样明显。2、如果是女生就不推荐了,极易断,干枯,分叉,
光明日报
中国载人航天工程总指挥、空间站应用与发展阶段飞行任务总指挥部总指挥长许学强下达命令,景海鹏、朱杨柱、
5月29日,浙江省杭州市中级人民法院公开开庭审理一起环保行政复议二审行政诉讼案件。据了解,徐某某就某环
近日,贵阳开阳县公安局接到一名八旬老人的报案称,他家中存放了多年的现金一夜之间竟全部不翼而飞金额高达
导读综合小编来为大家讲解下英雄联盟EDG淘汰赛阵容礼包介绍,怎么获取介绍这个很多人还不知道,现在让我们一
1、打开微信,点击我的,点击钱包,找到绑定银行卡,先绑定一张自己的银行卡。按照步骤输入自己银行卡,并
新华全媒+丨2023中国科幻大会用40场活动打造“科幻盛宴”---作为中关村论坛的重要活动之一,由中国科学...
5月29日煤炭开采板块较上一交易日下跌0 23%,华阳股份领跌。当日上证指数报收于3221 45,上涨0 28%。深证成
5月28日新疆导游大赛颁奖典礼在吐鲁番市交河故城外举行。来自全疆的40名获奖选手分别获得了超级导游、金牌
1、你好:生化全套检查内容包括:肝功能(总蛋白、白蛋白、球蛋白、白球比,总胆红素、直接、间接胆红素,
X 关闭
X 关闭
05-30 08:27:38
05-30 07:20:36
05-30 06:43:05
05-30 05:46:01
05-30 04:48:22