Vue.js笔记-条件渲染 列表渲染
v-if
<div id="demo"><div v-if="abc">{{abc.a}}</div> //该值为true时显示该标签,为false则不显示</div><script>var vm = new Vue({el:"#demo",data:{abc:{- a:"1"
}}})</script>
<h1 v-if="ok">Yes</h1><h1 v-else>No</h1>
<div v-if=""></div><template v-else><div v-if=""></div><div v-else></div></template>
template v-if
如果想切换多个元素,可以把一个<template>元素当作包装元素,并在上面使用v-if,最终的渲染结果不会包含它。<template v-if="ok"><h1>Title</h1><p>Paragraph 1</p><p>Paragraph 2</p></template>
v-show
不同的是有 v-show 的元素会始终渲染并保持在 DOM 中。v-show 是简单的切换元素的 CSS 属性 display。注意 v-show 不支持 <template> 语法。<h1 v-show="ok">Hello!</h1>
v-for
基于一个数组渲染一个列表。语法:item in items(数组元素的别名 in 数据数组)
<ul id="example-1"><li v-for="item in items">{{ item.message }}</li></ul>var example1 = new Vue({el: "#example-1",data: {items: [{ message: "Foo" },{ message: "Bar" }]}})
<div v-for="(index, item) in items">{{ index }} {{ item.message }}</div>
<div v-for="item of items"></div>
template v-for
渲染一个包含多个元素的块,需要将多个标签都用v-for遍历,那么就需要用template标签。同样,template在实际渲染的时候不会出现,只是起到一个包裹作用。<div id="app"><ul><template v-for="i in items"><li>Index is {{$index}}</li><li>Content is {{i}}</li></template></ul></div><script>var vm = new Vue({el: "#app",data: {items: {a: "1",b: "2",c: "3"}}})</script>
<ul><li>Index is 0</li><li>Content is 1</li><li>Index is 1</li><li>Content is 2</li><li>Index is 2</li><li>Content is 3</li></ul>
数组变动检测
变异方法(修改了原始数组): vue.js包装了被观察数组的变异方法,故它们能出发视图更新,即当利用这些方法变更数组时,被渲染的内容会实时更新,被包装的方法有:- push() 数组末尾添加
- pop() 数组末尾取出
- shift() 数组开头取出
- unshift() 数组开头添加
- splice() 删除并插入
- sort() 排序
- reverse() 数组顺序颠倒
<ul id="demo"><li v-for = "item in items">{{item}}</li></ul><script>var vm = new Vue({el:"#demo",data:function(){return {items:[4,2,3].splice(0,2)};}})</script>
例如,假定数据为:
{items: [{ _uid: "88f869d", ... },{ _uid: "7496c10", ... }]}
<div v-for="item in items" track-by="_uid"><!-- content --></div>
- 直接用索引设置元素,如 vm.items[0] = {}
- 修改数据的长度,如 vm.items.length = 0
<ul id="demo"><li v-for = "item in items">{{item.name}}</li></ul><button onclick = "change()">移除</button><script>var test = {name:"d"}var vm = new Vue({el:"#demo",data:{items:[{name:"a"},{name:"b"},{name:"c"}]},})vm.items.push(test);function change(){vm.items.$remove(test);}</script>
对象v-for
作用域内还可以访问另一个特殊变量$key<ul id="repeat-object" class="demo"><li v-for="value in object">{{ $key }} : {{ value }}</li></ul>new Vue({el: "#repeat-object",data: {object: {FirstName: "John",LastName: "Doe",Age: 30}}})
<div v-for="(key, val) in object">{{ key }} {{ val }}</div>
值域v-for
v-for 也可以接收一个整数,此时它将重复模板数次。<div><span v-for="n in 10">{{ n }} </span></div>
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: vue实战总结
- 下一篇:没有了
