1 基本用法
当遍历一个数组或枚举一个对象进行迭代循环展示时,就会用到列表渲染指令 v-for。 它的表达式需要结合 in 来使用,类似 item in items 的形式。
1.1 遍历数组
html:
<div id="app"> <ul> <li v-for="n in news">{{n.title}}</li> </ul> </div>
js:
<script> var app = new Vue({ el: '#app', data: { news: [ {title: '被智能手机绑架的i世代 爱熬夜、拒绝恋爱、不考驾照'}, {title: '黑莓宣布14亿美元收购网络安全公司Cylance'}, {title: '如何看待阿里巴巴开酒店这件事?'} ] } }); </script>
效果:
在 v-for 指令的表达式中, news 是 data 内定义的数据, n 是当前数组元素的别名。
列表渲染指令的表达式也支持使用 of 作为分隔符。
html:
<li v-for="n of news">{{n.title}}</li>
v-for 表达式支持当前项索引参数,索引从 0 开始,它是可选的 。
html:
<li v-for="(n,index) of news">{{index}} - {{n.title}}</li>
效果:
也可以使用内置标签 <template> ,渲染多个元素。
html:
<div id="app2"> <dl> <template v-for="n in news"> <dt>{{n.title}}</dt> <dd>{{n.content}}</dd> </template> </dl> </div>
js:
var app2 = new Vue({ el: '#app2', data: { news: [ {title: '科技',content:'智能手机是我们生活的好帮手... ...'}, {title: '互联网',content:'黑莓公司周五宣布... ...'}, {title: '社会',content:'阿里实体酒店“FlyZoo Hotel”将开业... ...'} ] } });
效果:
1.2 遍历对象属性
我们也可以使用 v-for 列表渲染指令来遍历对象属性。
html:
<div id="app3"> <li v-for="val in account">{{val}}</li> </div>
js:
var app3 = new Vue({ el: '#app3', data: { account: { name: 'deniro', messageCount: 100 } } });
效果:
遍历对象属性,可以带上两个可选参数,它们就是对象的属性名和索引:
html:
<li v-for="(val,name,index) in account">{{index}} - {{name}} : {{val}}</li>
1.3 迭代整数
html:
<div id="app4"> <ul> <li v-for="i in 5">{{i}}</li> </ul> </div>
js:
var app4 = new Vue({ el: '#app4' });
效果:
2 更新数组
Vue.js 的核心是数据与视图的双向绑定。因此当我们修改数组时, Vue.js 就会检测到数据了变化,所以用 v-for 渲染的视图也会更新 。使用以下方法修改数组时,就会触发视图更新:
- push()
- shift()
- unshift()
- splice()
- sort()
- reverse()
这些方法会改变原数组,所以又称为变异方法。
我们使用 push() 为 app 对象新增一个新闻标题:
js:
app.news.push({ title:'沃尔玛将超过苹果成美国第三大在线零售商' });
效果:
也有一些非变异方法,它们不会改变原数组,只会返回新数组:
- filter()
- concat()
- slice()
我们在使用这些方法时,可以通过设置新数组的方式来更新视图。
js:
//非变异方法更新数组 app.news = app.news.filter(function (item) { return item.title.match(/阿里巴巴/); });
效果:
这个示例中,我们使用 filter 函数,把新闻标题中含有“阿里巴巴”字样的新闻过滤出来。
Vue.js 在检测数组变化时,会最大化地复用 DOM 元素。 替换的数组,如果含有相同元素的项并不会被重新渲染,所以不用担心性能问题。
注意:通过以下方法来改变数组, Vue.js 是无法检测的,所以不会更新视图:
app.new[1]={...} app.new.length=1
我们可以使用 Vue.js 内置的 set 方法(可指定索引)来更新数组:
//通过 set 的设置索引方式来更新数组 Vue.set(app.news,1,{ title: '大数据之下的锦鲤:为什么你的微博总抽不到奖' });
效果:
也可以使用 splice 指定索引来更新数组:
//通过 splice 的设置索引方式来更新数组 app.news.splice(1, 0, { title: '南京现“刷脸支付”超市 网友:素颜去结账机器能识' });
至于第二个问题,同样可以通过 splice 来实现:
//通过 splice 来删除数组元素 app.news.splice(1);
以上示例 demo 。
3 过滤或排序
其实,之前已经有一个示例用到了 filter() 过滤方法。如果我们不想改变原数组,只想返回过滤或排序后数组副本,这时可以使用计算属性来实现。
html:
<div id="app"> <h3>过滤出带“美元”的标题</h3> <ul> <li v-for="(n,index) in filterNews">{{index}} - {{n.title}}</li> </ul> <h3>按照标题长度,由短到长排序</h3> <ul> <li v-for="(n,index) in sortNews">{{index}} - {{n.title}}</li> </ul> </div>
js:
<script> var app = new Vue({ el: '#app', data: { news: [ {title: '被智能手机绑架的i世代 爱熬夜、拒绝恋爱、不考驾照'}, {title: '黑莓宣布14亿美元收购网络安全公司Cylance'}, {title: '如何看待XXX开酒店赚美元这件事?'} ] }, computed: { //过滤出带“美元”的标题 filterNews: function () { return this.news.filter(function (item) { return item.title.match(/美元/); }) }, //按照标题长度,由短到长排序 sortNews: function () { return this.news.sort(function (val1, val2) { if(val1.title.length < val2.title.length){ return -1; } }) } } }); </script>
效果( demo ):
总结
以上所述是小编给大家介绍的Vue.js 中的 v-for 列表渲染指令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]