Vue学习之v-if和v-for指令

v-if和v-show

v-if和v-show的作用有点类似,我们一起来看下,案例代码如下:




    
    
    
    Document
    


    

v-if的使用

v-show的使用

效果如下:

Vue学习之v-if和v-for指令_第1张图片

通过演示效果我们能看到v-if和v-show都能控制标签元素的现实和隐藏,但相互之间又有区别

 指令     | 说明                                                                                    
 ------ | -------------------------------------------------------------------------------------- 
 v-if   | 每次都会重新删除或创建元素,有较高的切换性能消耗如果元素涉及到频繁的切换,最好不要使用 v-if, 而是推荐使用 v-show                       
 v-show | 每次不会重新进行DOM的删除和创建操作,只是切换了元素的 display:none 样式有较高的初始渲染消耗如果元素可能永远也不会被显示出来被用户看到,则推荐使用 v-if

v-for的使用

1.普通数组

针对数据为数组的类型,循环的使用。

简单插值的使用





  
  
  
  Document
  



  

{{list[0]}}

{{list[1]}}

{{list[2]}}

{{list[3]}}

{{list[4]}}

Vue学习之v-if和v-for指令_第2张图片

循环使用

简单的使用循环

Vue学习之v-if和v-for指令_第3张图片

Vue学习之v-if和v-for指令_第4张图片

获取循环下标

Vue学习之v-if和v-for指令_第5张图片

Vue学习之v-if和v-for指令_第6张图片

2.对象数组

集合中的元素是对象





  
  
  
  Document
  



  

Id:{{ user.id }} --- 名字:{{ user.name }} --- 索引:{{i}}

Vue学习之v-if和v-for指令_第7张图片

数组中的元素是自定义的对象的时候直接通过"."存取器来获取元素。

3.循环对象

注意:在遍历对象身上的键值对的时候, 除了有val,key ,在第三个位置还有 一个 索引 。





  
  
  
  Document
  



  

值是: {{ val }} --- 键是: {{key}} -- 索引: {{i}}

Vue学习之v-if和v-for指令_第8张图片

4.迭代数字





  
  
  
  Document
  



  

这是第 {{ i }} 次循环

Vue学习之v-if和v-for指令_第9张图片

5.循环中key属性的使用

注意:2.2.0+ 的版本里,当在组件中使用 v-for 时,key 现在是必须的。
当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用 “就地复用” 策略。如果数据项的顺序被改变,Vue将不是移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。

有问题的情况





  
  
  
  Document
  



  

{{item.id}} --- {{item.name}}

效果

Vue学习之v-if和v-for指令_第10张图片

我们发现原来我们勾选的是id为4的选项,但是当我们插入新的一行的时候,被选中的就变为3了,这就有问题的,这时我们需要使用key来给每天数据绑定一个特定的key

key的使用

Vue学习之v-if和v-for指令_第11张图片

直接给key绑定循环变量访问有问题:

Vue学习之v-if和v-for指令_第12张图片

Vue学习之v-if和v-for指令_第13张图片

Vue学习之v-if和v-for指令_第14张图片

这时我们发现前面的问题解决了~

  • 注意: v-for 循环的时候,key 属性只能使用 number获取string
  • 注意: key 在使用的时候,必须使用 v-bind 属性绑定的形式,指定 key 的值
  • 在组件中,使用v-for循环的时候,或者在一些特殊情况中,如果 v-for 有问题,必须 在使用 v-for 的同时,指定 唯一的 字符串/数字 类型 :key 值

你可能感兴趣的:(Vue)