广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Vue.js中列表如何渲染
  • 655
分享到

Vue.js中列表如何渲染

2024-04-02 19:04:59 655人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关vue.js中列表如何渲染的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。v-for可以使用 v-for 指令基于一个数组渲染一个列表。这个指令使用特殊的

这篇文章给大家分享的是有关vue.js中列表如何渲染的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

v-for

可以使用 v-for 指令基于一个数组渲染一个列表。这个指令使用特殊的语法,形式为item in items,items 是数据数组,item 是当前数组元素的别名:

示例:

<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' }
 ]
 }
})

在 v-for 块内我们能完全访问父组件作用域内的属性,另有一个特殊变量 $index,正如你猜到的,它是当前数组元素的索引

<ul id="example-2">
 <li v-for="item in items">
 {{ parentMessage }} - {{ $index }} - {{ item.message }}
 </li>
</ul>
var example2 = new Vue({
 el: '#example-2',
 data: {
 parentMessage: 'Parent',
 items: [
  { message: 'Foo' },
  { message: 'Bar' }
 ]
 }
})

另外,你可以为索引指定一个别名(如果 v-for 用于一个对象,则可以为对象的键指定一个别名):

<div v-for="(index, item) in items">
 {{ index }} {{ item.message }}
</div>

从 1.0.17 开始可以使用 of 分隔符,更接近 javascript 遍历器语法:

<div v-for="item of items"></div>

template v-for

类似于 template v-if,也可以将 v-for 用在 <template> 标签上,以渲染一个包含多个元素的块。例如:

<ul>
 <template v-for="item in items">
 <li>{{ item.msg }}</li>
 <li class="divider"></li>
 </template>
</ul>

数组变动检测

变异方法

Vue.js 包装了被观察数组的变异方法,故它们能触发视图更新。

被包装的方法有:

  • push()

  • pop()

  • shift()

  • unshift()

  • splice()

  • sort()

  • reverse()

你可以打开浏览器的控制台,用这些方法修改上例的 items 数组。例如:example1.items.push({ message: 'Baz' })

替换数组

变异方法,如名字所示,修改了原始数组。相比之下,也有非变异方法,如 filter() , concat()slice() ,不会修改原始数组而是返回一个新数组。在使用非变异方法时,可以直接用新数组替换旧数组:

example1.items = example1.items.filter(function (item) {
 return item.message.match(/Foo/)
})

可能你觉得这将导致 Vue.js 弃用已有 DOM 并重新渲染整个列表——幸运的是并非如此。 Vue.js 实现了一些启发算法,以最大化复用 DOM 元素,因而用另一个数组替换数组是一个非常高效的操作。

track-by

有时需要用全新对象(例如通过 api 调用创建的对象)替换数组。因为 v-for 默认通过数据对象的特征来决定对已有作用域和 DOM 元素的复用程度,这可能导致重新渲染整个列表。但是,如果每个对象都有一个唯一 ID 的属性,便可以使用 track-by 特性给 Vue.js 一个提示,Vue.js 因而能尽可能地复用已有实例。

例如,假定数据为:

{
 items: [
 { _uid: '88f869d', ... },
 { _uid: '7496c10', ... }
 ]
}

然后可以这样给出提示:

<div v-for="item in items" track-by="_uid">
 <!-- content -->
</div>

然后在替换数组 items 时,如果 Vue.js 遇到一个包含 _uid: '88f869d' 的新对象,它知道它可以复用这个已有对象的作用域与 DOM 元素。

track-by $index

如果没有唯一的键供追踪,可以使用 track-by="$index" ,它强制让 v-for 进入原位更新模式:片断不会被移动,而是简单地以对应索引的新值刷新。这种模式也能处理数据数组中重复的值。

这让数据替换非常高效,但是也会付出一定的代价。因为这时 DOM 节点不再映射数组元素顺序的改变,不能同步临时状态(比如 <input> 元素的值)以及组件的私有状态。因此,如果 v-for 块包含 <input> 元素或子组件,要小心使用 track-by="$index"

问题

因为 JavaScript 的限制,Vue.js 不能检测到下面数组变化:

      1.直接用索引设置元素,如 vm.items[0] = {};

      2.修改数据的长度,如 vm.items.length = 0

为了解决问题 (1),Vue.js 扩展了观察数组,为它添加了一个 $set() 方法:

// 与 `example1.items[0] = ...` 相同,但是能触发视图更新
example1.items.$set(0, { childMsg: 'Changed!'})

至于问题 (2),只需用一个空数组替换 items。

除了 $set() , Vue.js 也为观察数组添加了 $remove() 方法,用于从目标数组中查找并删除元素,在内部它调用 splice() 。因此,不必这样:

var index = this.items.indexOf(item)
if (index !== -1) {
 this.items.splice(index, 1)
}

只用这样:

this.items.$remove(item)

对象 v-for

也可以使用 v-for 遍历对象。除了 $index 之外,作用域内还可以访问另外一个特殊变量 $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>

在遍历对象时,是按 Object.keys() 的结果遍历,但是不能保证它的结果在不同的 JavaScript 引擎下是一致的。

值域 v-for

v-for 也可以接收一个整数,此时它将重复模板数次。

<div>
 <span v-for="n in 10">{{ n }} </span>
</div>

显示过滤/排序的结果

有时我们想显示过滤/排序过的数组,同时不实际修改或重置原始数据。有两个办法:

     1.创建一个计算属性,返回过滤/排序过的数组;

     2.使用内置的过滤器 filterBy 和 orderBy。

计算属性有更好的控制力,也更灵活,因为它是全功能 JavaScript。但是通常过滤器更方便,详细见 API。

感谢各位的阅读!关于“Vue.js中列表如何渲染”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Vue.js中列表如何渲染

本文链接: https://www.lsjlt.com/news/78767.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue.js中列表如何渲染
    这篇文章给大家分享的是有关Vue.js中列表如何渲染的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。v-for可以使用 v-for 指令基于一个数组渲染一个列表。这个指令使用特殊的...
    99+
    2022-10-19
  • Vue条件渲染与列表渲染
    目录一、Vue条件渲染v-showv-ifv-else-ifv-elsev-if 与 template小结二、列表渲染v-showkey的作用1、虚拟DOM中key的作用2、对比规则...
    99+
    2022-11-13
  • Vue.js条件渲染和列表渲染以及Vue中key值的内部原理
    目录条件渲染v-ifv-show列表渲染v-for指令面试题:key的内部原理条件渲染 v-if 写法:(1).v-if="表达式"(2).v-else-if=&...
    99+
    2023-05-15
    Vue.js条件渲染和列表渲染 Vue key值内部原理 Vue条件渲染 Vue列表渲染
  • Vue.js条件渲染、列表渲染及Vue中key值的内部原理是什么
    这篇文章主要介绍“Vue.js条件渲染、列表渲染及Vue中key值的内部原理是什么”,在日常操作中,相信很多人在Vue.js条件渲染、列表渲染及Vue中key值的内部原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-07-06
  • Vue中条件渲染和列表渲染的示例分析
    这篇文章将为大家详细讲解有关Vue中条件渲染和列表渲染的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言什么是条件渲染?在我们的页面中会有很多这样的应用场景,比如说我们今天要上架一个活动,这个活...
    99+
    2023-06-25
  • Vue怎么实现条件渲染与列表渲染
    本文小编为大家详细介绍“Vue怎么实现条件渲染与列表渲染”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue怎么实现条件渲染与列表渲染”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、Vue条件渲染v-show...
    99+
    2023-06-30
  • 微信小程序如何实现列表渲染和条件渲染
    目录概述:循环渲染:渲染目标是列表时:渲染目标为字典时:总结概述: 要实现列表渲染我们首先要介绍一下< block标签. 该标签不会再列表中做任何渲染,一般当做容器使用. 我们...
    99+
    2022-11-13
  • Vue列表渲染v-for如何使用
    这篇文章主要讲解了“Vue列表渲染v-for如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue列表渲染v-for如何使用”吧!列表渲染列表渲染的东西比较多,我们通过案例一步一步学习...
    99+
    2023-07-05
  • 详解Vue的列表渲染
    目录1. v-for:遍历数组内容(常用)2. v-for:遍历对象属性(常用)3.遍历字符串(不常用)4.遍历指定次数(不常用)5.key 的作用和原理1.虚拟DOM中key的作用...
    99+
    2022-11-12
  • Vue.js列表渲染绑定jQuery插件的示例分析
    这篇文章给大家分享的是有关Vue.js列表渲染绑定jQuery插件的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用v-for绑定列表时,有时候需要绑定如select2...
    99+
    2022-10-19
  • Vue中怎么实现列表渲染
    这期内容当中小编将会给大家带来有关Vue中怎么实现列表渲染,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。<!DOCTYPE html> <ht...
    99+
    2022-10-19
  • Vue基础教程之条件渲染和列表渲染
    目录前言1.1 作用 1.2 控制元素显隐的方式 1.3 初始渲染对比 1.4 切换消耗对比 1.5 使用场景对比 1.6 其他 2 v-if 和 v-for 2.1 v-if 和 ...
    99+
    2022-11-12
  • Vue列表渲染是怎样的
    Vue列表渲染是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。   变异方法(mutationmethod),顾名思义,会改变被这...
    99+
    2022-10-19
  • vue中v-for指令完成列表渲染
    目录1、列表遍历2、Vue中key的作用3、列表过滤本文就Vue中列表渲染做个简单总结和使用演示: 列表渲染是用v-for指令根据绑定一组元素的选项来完成的,渲染格式可以自定义。 1...
    99+
    2022-11-12
  • Vue中如何实现列表渲染,排序,过滤操作
    这篇文章主要为大家展示了“Vue中如何实现列表渲染,排序,过滤操作”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中如何实现列表渲染,排序,过滤操作”这篇文章吧。1. 列表(渲染、排序、过滤...
    99+
    2023-06-29
  • vue.js基于v-for如何实现批量渲染 Json数组对象列表数据
    这篇文章主要为大家展示了“vue.js基于v-for如何实现批量渲染 Json数组对象列表数据”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue.js基于v-...
    99+
    2022-10-19
  • Vue的列表渲染方法有哪些
    本篇内容介绍了“Vue的列表渲染方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. v-for:遍历数组内容(常用)in 也可以用...
    99+
    2023-06-25
  • 如何监听angularJs列表数据是否渲染完毕
    小编给大家分享一下如何监听angularJs列表数据是否渲染完毕,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前端在做数据渲染的...
    99+
    2022-10-19
  • vue中v-for指令怎么完成列表渲染
    这篇文章将为大家详细讲解有关vue中v-for指令怎么完成列表渲染,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、列表遍历最基本的使用案例1:<!DOCTYPE html><...
    99+
    2023-06-21
  • 商城小程序列表渲染的方法
    今天小编给大家分享一下商城小程序列表渲染的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。wx:for在组件上使用wx:f...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作