用v代表把一个数组对应为页面上的一组元素
vue。js使用的是v代表指令来处理组件元素的循环迭代逻辑。通常它会和v配合使用,达到我们所需要的处理逻辑。
v代表的语法形式是项项目,其项目中就是我们要循环的数组,而产品则是被迭代的数组元素的别名。
& lt; ul id=笆纠?”比; & lt;李v="项项目”在 {{项目。消息}} & lt;/li> & lt;/ul>
我们都知道既然有循环那肯定少不了对索引的处理.v-for指令给我们提供了可选的第二个参数,即当前项的索引。
& lt; ul id=笆纠?”比; & lt;李v="(项目、索引)项目”在 {{parentMessage}} -{{指数}}{{项目。消息}} & lt;/li> & lt;/ul>
指数就是那个当前索引了。
你也可以使用的替代在作为分隔符。
& lt; div)="项目的项目"祝辞& lt;/div>
<强>在v代表里使用对象强>
是哒,很明显v代表也可以用来遍历一个对象的属性。
& lt; ul类id=皏-for-object”=把菔尽北? 李& lt; v=岸韵蟆钡募壑当? {{value}} & lt;/li> & lt;/ul>
也可以提供第二个参数为属性名称(也就是键名)
& lt; div v="对象(价值、名称)”在 {{名称}}:{{value}} & lt;/div>
还可以用第三个参数作为索引
& lt; div v="(价值、名称、指数)在对象“比; {{指数}}。{{名称}}:{{value}} & lt;/div>
敲黑板啦哈~
vuejs为了维护循环列表的状态需要提供唯一的关键属性。
这个唯一的关键可以为我们提供列表元素状态的更新,避免重复渲染等优化页面的性能。
这个关键很关键,并不推荐使用简单的索引作为关键的值,因为会有造成重复渲染混乱的可能。
咳咳~继续敲黑板
我们在写程序的时候,往往会有数据更新但是页面元素没有跟着对应变化的情况。
数组列表的更新检测vue为我们提供了一套解决方案,但是需要注意它们在使用的方式上是不同的。
<强>变异方法强>
意思就是以下的数组处理方法可以触发视图上的更新。
push () pop () 转变() 未() 接头() sort () 反向()
需要注意的是它们处理的都是原始数组。也就是在原来的数组上增加删除或者排序操作。
<强>非变异方法强>
数组也有一些方法不会改变原始数据,而是返回新的数组。
filter () concat () 片()
返回新的数组在页面更新渲染的性能大家不必担心,vue已经为我们做好了重用工作。
需要注意,在有些情况vue无法检测数组变动的情况如下:
-
<李>当你利用索引直接设置一个数组项时,例如:vm。李物品[indexOfItem]=newValue >
<李>当你修改数组的长度时,例如:vm.items。李长=newLength >
var vm=new Vue ({ 数据:{ 项目:[a, b, c的) } }) vm。项目[1]=' x '//不是响应性的 vm.items。长度=2//不是响应性的
为了解决这类问题,官方提供了两种解决方案。
1, Vue.set
//Vue.set Vue.set (vm。项、indexOfItem newValue)
2, Array.prototype.splice
//Array.prototype.splice vm.items。拼接(indexOfItem 1 newValue)
如果我们在处理数据无法更新视图的时候记得试试这个方法。
<强>对象变更检测注意事项强>
对于对象属性的增加和删除,对于已经创建的实例,Vue不允许动态添加根级别的响应式属性。