条件渲染v-if
Vue is awesome!
Vue!
//使用v-else来表示v-if的else块
Oh no!
因为v-if是一个指令,因此必须将其添加到一个元素上。若想切换多个元素,则可以把一个
元素当作不可见的包裹元素,并在上面使用v-if,最终渲染结果将不包含元素v-else-if
A
B
C
Not A/B/C
小例子:用key管理可复用的元素vue会尽可能高效的渲染元素,通常会复用已有元素而不是从头开始渲染。但可以使用key这个attribute对两个不同元素进行独立。
v-showv-show也是一个根据条件展示元素的指令,用法大致一样:
Hello!
需要注意:带有v-show的元素始终会被渲染并保留在DOM中,v-show只是简单地切换元素的CSS property注意,v-show 不支持 元素,也不支持 v-else。v-if与v-showv-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。v-of与v-forv-for优先级高于v-if,不建议两者一起使用。如果想实现有条件地跳过循环的执行,可以将v-if置于外层元素上。
NO todos left!
如果想要只渲染部分符合条件的结点时,可以将两个放入同一元素中。
{{todo}}
列表渲染v-for我们可以使用v-for指令基于一个数组渲染一个列表,格式为:item in items的特殊语法,其中items是原数组,而item是被迭代的数组元素的别名。
var example1 = new Vue({
el: '#ex-1',
data: {
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})
在v-for块中,我们可以访问所有父作用域的property;v-for还支持一个可选的第二个参数,即当前项的索引值。
-
{{parentMessage}}-{{index}}-{{item.message}}
var example2 = new Vue({
el: '#ex-2',
data: {
parentMessage:'Parent',
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})
可以用of替代in作为分隔符,更接近JS迭代器的语法。在v-for中使用对象可以使用v-for遍历一个对象的property.
new Vue({
el: '#v-for-object',
data: {
object: {
title: 'How to do lists in Vue',
author: 'Jane Doe',
publishedAt: '2016-04-10'
}
}
})
结果为:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MCA4CYaM-1630069799894)(C:\Users\cz18\AppData\Roaming\Typora\typora-user-images\image-20210823214922956.png)]也可以提供第二个参数为property的名称,也就是键名。还可以用第三个参数作为索引。注意:为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key attribute:建议尽可能在使用 v-for 时提供 key attribute,除非遍历输出的 DOM 内容非常简单,或者是刻意依赖默认行为以获取性能上的提升。因为它是 Vue 识别节点的一个通用机制,key 并不仅与 v-for 特别关联。后面我们将在指南中看到,它还具有其它用途。数组更新检测变更方法:这些数组变更方法会触发视图的更新,包括:push()pop()shift()unshift()splice()sort()reverse()替换数组:非变更方法包括:filter,concat,slice对于这些方法,vue用替换后的数组取代原有数组。显示过滤,排序后的结果想要显示一个数组经过过滤或排序后的版本,可以创建一个计算属性,返回过滤或排序后的数组。在计算属性不适用的情况下,例如在嵌套的v-for循环中,可以使用一个方法实现:
...
data: {
sets: [[ 1, 2, 3, 4, 5 ], [6, 7, 8, 9, 10]]
},
methods: {
even: function (numbers) {
return numbers.filter(function (number) {
return number % 2 === 0
})
}
}
在v-for里使用值范围和py中range差不多,接受整数会把模板重复对应次数。在上使用v-fortemplate的作用是模板占位符,可帮助我们包裹元素,但在循环过程当中,template不会被渲染到页面上。可以利用带有c-for的来渲染一段包含多个元素的内容。
- {{message}}
//这样上面这俩都可以被循环多次了。
}
Vue
vue.js
javascript
1、条件渲染1.v-if写法:(1).v-if="表达式"(2).v-else-if="表达式”(3).v-else="表达式”适用于:切换频率较低的场景。特点:不展示的DOM元素直接被移除。注意: v-if可以和:v-else-if、v-else一起使用,但要求结构不能被“打断”。2.v-show写法: v-show="表达式"适用于:切换频率较高的场景。特点:不展示的DOM元素未被移除,仅仅是使用样式隐藏掉3.备注:T使用v-if的时,元素可能无法获取到,而使用v-show一定可以获取到。4.template标签只能和v-if配合使用,不能和v-show配合2、列表渲染v-for指令:1.用于展示列表数据2.语法: v-for="(item, index) in xxx" : key="yyy"3.可遍历:数组、对象、字符串(用的很少)、指定次数(用的很少)
版权声明:本文为CSDN博主「weilaaer」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weilaaer/article/details/127415908
更多相关推荐
VUE
vue.js
前端
javascript
文章目录条件渲染v-showv-ifv-else-ifv-elsev-show和v-iftemplatetemplate和v-if结合使用列表渲染v-for遍历数组遍历对象遍历字符串遍历指定次数v-for中key的作用与原理vue数据的转化——虚拟DOMvue中key的作用vue中key...
Vue
vue.js
javascript
前端
绑定样式绑定class样式字符串写法适用于:样式的类名不确定,需要动态指定
test