VUE指令-列表渲染v-for

v-for 指令根据一组数组的选项列表进行渲染。v-for 指令需要使用 item in items 形式的特殊语法,items 是源数据数组并且 item 是数组元素迭代的别名。

v-for="item in items"


<!-- 格式v-for="item in items" -->

<div style="height: 150px;background: #CCC;margin: 5px;">

<div style="font-size: 20px;">

v0.v-for指令示例(默认方式)</div>

<hr />

<div>

<div style="font-size: 20px;" v-for="item in items">

Name:{{item.name}}

</div>

</div>

</div>

v-for="(item,index) in items"


<!-- 格式v-for="(item,index) in items" -->

<!-- 数组只有两个参数(item,index) -->

<div style="height: 150px;background: #CCC;margin: 5px;">

<div style="font-size: 20px;">

v1.v-for指令示例(item,index))</div>

<hr />

<div>

<div style="font-size: 20px;" v-for="(item,key,index) in items">

Name:{{item.name}} + Key:{{key}} + Index:{{index}}

</div>

</div>

</div>

v-for="(value,key,index) in items" 对象迭代


<!-- 格式v-for="(value,key,index) in items" -->

<!-- 对象迭代可以有三个参数(value,key,index) -->

<div style="height: 200px;background: #CCC;margin: 5px;">

<div style="font-size: 20px;">

v0.v-for指令示例(value,key,index)</div>

<hr />

<div>

<div style="font-size: 20px;" v-for="(value,key,index) in obj">

Name:{{value}} + Key:{{key}} + Index:{{index}}

</div>

</div>

</div>

也可以用 of 替代 in 作为分隔符,因为它是最接近 JavaScript 迭代器的语法。

// TODO

key

当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。这个类似 Vue 1.x 的 track-by="$index" 。

这个默认的模式是高效的,但是只适用于不依赖子组件状态或临时 DOM 状态 (例如:表单输入值) 的列表渲染输出

为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。理想的 key 值是每项都有的且唯一的 id。这个特殊的属性相当于 Vue 1.x 的 track-by ,但它的工作方式类似于一个属性,所以你需要用 v-bind 来绑定动态值 (在这里使用简写):

<div v-for="item in items" :key="item.id">
    <!-- 内容 -->
  </div>

建议尽可能在使用 v-for 时提供 key,除非遍历输出的 DOM 内容非常简单,或者是刻意依赖默认行为以获取性能上的提升。

因为它是 Vue 识别节点的一个通用机制,key 并不与 v-for 特别关联,key 还具有其他用途,我们将在后面的指南中看到其他用途。

v-for with v-if

当它们处于同一节点,v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中。当你想为仅有的一些项渲染节点时,这种优先级的机制会十分有用

<!DOCTYPE html>
<html style="height: 100%;">

    <head>
        <meta charset="UTF-8">
        <script type="text/javascript" src="../lib/vue.v2.5.12.js" ></script>
        <title>HelloDemo</title>
    </head>

    <body style="height: 100%;">
        <style>

        </style>
        <!--
            VUE指令v-for列表渲染
                v-for指令需要使用item in items形式的特殊语法,items是源数据数组并且item是数组元素迭代的别名。
                也可以用 of 替代 in 作为分隔符
            REF:
                http://www.runoob.com/vue2/vue-loop.html
                https://cn.vuejs.org/v2/guide/list.html
        -->
        <div id="appVue">
            <!-- 格式v-for="(value,key,index) in items" -->
            <!-- 对象迭代可以有三个参数(value,key,index) -->
            <div style="height: 200px;background: #CCC;margin: 5px;">
                <div style="font-size: 20px;">
                    v0.v-for指令示例(value,key,index)</div>
                <hr />
                <div>
                    <div style="font-size: 20px;" v-for="(value,key,index) in obj">
                        Name:{{value}} + Key:{{key}} + Index:{{index}}
                    </div>
                </div>
            </div>

            <!-- 格式v-for="(item,index) in items" -->
            <!-- 数组只有两个参数(item,index) -->
            <div style="height: 150px;background: #CCC;margin: 5px;">
                <div style="font-size: 20px;">
                    v1.v-for指令示例(item,index))</div>
                <hr />
                <div>
                    <div style="font-size: 20px;" v-for="(item,key,index) in items">
                        Name:{{item.name}} + Key:{{key}} + Index:{{index}}
                    </div>
                </div>
            </div>

            <!-- 格式v-for="item in items" -->
            <div style="height: 150px;background: #CCC;margin: 5px;">
                <div style="font-size: 20px;">
                    v0.v-for指令示例(默认方式)</div>
                <hr />
                <div>
                    <div style="font-size: 20px;" v-for="item in items">
                        Name:{{item.name}}
                    </div>
                </div>
            </div>
        </div>
        <script>
            new Vue({
                    el: "#appVue",
                    data: {
                        items:[{
                            name:"AAA"
                        },{
                            name:"BBB"
                        },{
                            name:"CCC"
                        }],
                        obj:{
                            prop0:"AAA",
                            prop1:"BBB",
                            prop2:"CCC"
                        }
                    }
                }

            )
        </script>
    </body>
</html>

REF:

http://www.runoob.com/vue2/vue-loop.html

https://cn.vuejs.org/v2/guide/list.html

时间: 2024-11-12 04:15:21

VUE指令-列表渲染v-for的相关文章

【03】Vue 之列表渲染及条件渲染

3.1. 条件渲染 有时候我们要根据数据的情况,决定标签是否进行显示或者有其他动作.最常见的就是,表格渲染的时候,如果表格没有数据,就显示无数据.如果有数据就显示表格数据. Vue帮我们提供了一个v-if的指令,帮助我们完成判断的模板处理. <div id="app"> <h1 v-if="ok">Yes</h1> <h1 v-else>No</h1> </div> <!-- 当ok为tr

vue.js 列表渲染

高清大图下载

Vue基础篇--5列表渲染v-for

Vue基础篇--5列表渲染v-for 1.用v-for把一个数组对弈为一组元素 我们用v-for指令根据一组数组选项列表进行渲染. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <script src="./vue.js"

vue中的列表渲染

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue中列表渲染</title> <script src="./vue.js"></script> </head> <body> <div id="app">

Vue.js(五)列表渲染 v-for

v-for="item in items "  //  数组更新检测  //  对象更改检测注意事项  //  显示过滤 / 排序结果  //  一段取值范围的 v-for  //   v-for 数组:我们用 v-for 指令根据一组数组的选项列表进行渲染.v-for 指令需要使用 item in items 形式的特殊语法,items 是源数据数组并且 item 是数组元素迭代的别名. <ul id="example-1"> <li v-for

VUE:条件渲染和列表渲染

条件渲染 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- 1.条件渲染指令 v-if v-else 移除标签 v-show 通过样式隐藏 2.比较 v-if 与v-show 如果需要频繁切换 v-show 较好 --> <div id="

关于vue.js中列表渲染练习

html: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>列表渲染</title></head><body> <!-- v-for可以将一组数组渲染到列表当中 --> <!-- 以item in items的形式 其中 items是源数据 item是他的别名 --&

3-7 Vue中的列表渲染

 举个案例:循环data中的list的值在div中,并显示相应的index值. 关于数组的循环: //显示效果如下图: //一般的列表渲染最好带一个key值,要把key值设置为唯一值的话,可以选择index.但在频繁操作DOM元素相对应的数据的时候,它还是有点浪费性能,可能让Vue没法充分复用DOM节点,所以不太建议用index来做key值 //所以一般的项目中的后端会传递过来一些数据,这些数据可以把它作为key值来使用(一般会携带一个后端或数据库相关的一个唯一的数据条目标识符,例如:id) /

Vue.js 实战教程 V2.x(10)列表渲染

10列表渲染 10.1用 v-for 把数组对应为元素 <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' } ] } })