Vue---day4---列表渲染

列表渲染

v-for指令

v-for=“item in items”这里的items指的是源数组,item则是为他取的别名,相关代码案例在前面Vue介绍那篇博客已经展示过了。这里再补充一个v-for使我们可以访问父作用域的property,还有一个可选的第二参数,也就是当前元素的索引index。

<ul id="example-2">
  <li v-for="(item, index) in items">
    {{ parentMessage }} - {{ index }} - {{ item.message }}
  </li>
</ul>

这里的index就是其在数组中的索引位置,从0开始。为了更接近js的语法,可以将in改为of,不过in更类似python的语法,这里用啥纯粹个人喜好不会对程序产生影响。

不止数组,v-for也可以用来访问一个对象。其中各种属性均以键值对的形式来获取。

<div v-for="(value, name) in object">
  {{ name }}: {{ value }}
</div>

同样这里也有索引的概念,从0开始。
(遍历对象时,会以Object.key()遍历,但是不同的JS引擎可能导致结果不一样)

维护策略

当 Vue 正在更新使用 v-for 渲染的元素列表时,它默认使用“就地更新”的策略。
也就是说当数据的顺序发生改变时,Vue在更新渲染元素不会直接操作DOM元素移动来同步数据顺序的改变,而是直接依据更新后的数据进行就地更新,并保证索引的正确。

为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key attribute。建议尽可能在使用 v-for 时提供 key attribute,除非遍历输出的 DOM 内容非常简单,或者是刻意依赖默认行为以获取性能上的提升。但是v-for并不与key特别关联。

数组更新检测

Vue对被绑定侦听的数据包裹了变更方法。

		<div id="app">
           <p v-for="item in items">
               {{item}}
           </p>
       </div>
       <script>
           var vm = new Vue({
               el:"#app",
               data:{
                   items:[
                       {boy1:"mike"},
                       {girl1:"mercy"},
                       {boy2:"Bob"}
                       ]
               }
           })
       </script>

在这里插入图片描述
push()加入一个元素。
在这里插入图片描述
pop()删除最后一个
在这里插入图片描述
shift()删除第一个元素
在这里插入图片描述
unshift()添加元素到第一位
在这里插入图片描述
splice(index,len,[item])它也可以用来替换/删除/添加数组内某一个或者几个值(该方法会改变原始数组)
在这里插入图片描述
sort()类似java中的排序,这里需要指定比较的属性,例如id什么的。

<div id="app">
            <div v-for="item in nums">
                {{item.value}}
            </div>
        </div>
        <script>
            var vm = new Vue({
                el:"#app",
                data:{
                    nums:[
                        {id:1,value:"this"},
                        {id:3,value:"simple"},
                        {id:2,value:"a"},
                        {id:4,value:"words"}
                    ]
                },
                methods:{
                    sort(){
                        this.nums.sort((a,b)=>{
                        return a.id-b.id;
                        });
                    }
                }
            })
        </script>

在这里插入图片描述
在这里插入图片描述
reverse()数据翻转。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值