Vue的if判断和for循环:of,in

一、条件判断

v-for:循环显示,最好加上:key = index,如果不需要排序可以使用index,如果需要排序或者做其他操作,不用index,存在问题。

v-if:隐藏与显示,v-show也可以实现隐藏与显示,但是当只需要不频繁切换隐藏显示时用v-if可以。当频繁切换时用v-show,会自动加上display:none,并没有从dom中清除,这样就 不用重新渲染,性能好。而v-if会使元素从dom中清除,每次切换都得重新渲染,加载。

 

list是数组的话使用 of 
list是对象的话使用 in 

1、v-if

  条件判断使用 v-if 指令:

2、v-else

  可以用 v-else 指令给 v-if 添加一个 "else" 块:

//随机生成一个数字,判断是否大于0.5,然后输出对应信息:
<div id="app">
    <div v-if="Math.random() > 0.5">
      Sorry
    </div>
    <div v-else>
      Not sorry
    </div>
</div>
    
<script>
new Vue({
  el: '#app'
})
</script>

3、v-else-if

  v-else-if 在 2.1.0 新增,顾名思义,用作 v-if 的 else-if 块。可以链式的多次使用:

  v-else 、v-else-if 必须跟在 v-if 或者 v-else-if之后。

4、v-show

  我们也可以使用 v-show 指令来根据条件展示元素:

<div id="app">
    <h1 v-show="ok">Hello!</h1>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    ok: true
  }
})
</script>

5、v-if与v-show的区别:

  在切换 v-if 块时,Vue.js 有一个局部编译/卸载过程,因为 v-if 之中的模板也可能包括数据绑定或子组件。

  v-if 是真实的条件渲染,因为它会确保条件块在切换当中合适地销毁与重建条件块内的事件监听器和子组件。

  v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——在条件第一次变为真时才开始局部编译(编译会被缓存起来)。

  相比之下,v-show 简单得多——元素始终被编译并保留,只是简单地基于 CSS 切换。

  一般来说,v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗。因此,如果需要频繁切换 v-show 较好,如果在运行时条件不大可能改变 v-if 较好。

二、循环语句

  循环使用 v-for 指令。

  v-for 指令需要以 site in sites 形式的特殊语法, sites 是源数据数组,并且 site 是数组元素迭代的别名

  v-for 可以绑定数据到数组来渲染一个列表:

<div id="app">
  <ol>
    <li v-for="site in sites">
      {{ site.name }}
    </li>
  </ol>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    sites: [
      { name: 'Runoob' },
      { name: 'Google' },
      { name: 'Taobao' }
    ]
  }
})
</script>

  模板中使用 v-for:根据sites数组内容循环展示模板里的 li 标签

<ul>
  <template v-for="site in sites">
    <li>{{ site.name }}</li>
    <li>--------------</li>
  </template>
</ul>

1、v-for 迭代对象

  v-for 可以通过一个对象的属性来迭代数据:

<li v-for="value in object">
    {{ value }}
</li>

  也可以提供第二个的参数为键名:

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

  第三个参数为索引:

<li v-for="(value, key, index) in object">
     {{ index }}. {{ key }} : {{ value }}
</li>

  不仅如此,在迭代属性输出的之前,v-for会对属性进行升序排序输出:

<div id="app">
<ul>
    <li v-for="n in object">
     {{ n }}
    </li>
  </ul>
</div>

new Vue({
  el: '#app',
  data: {
    object: {
      2: '第三',
      0: '第一',
      1: '第二'
    }
  }
})

//输出:第一、第二、第三

2、v-for 迭代整数

  v-for 也可以循环整数

 <li v-for="n in 10">
     {{ n }}
</li>
//从1展示到10

3、v-for 循环数组

<li v-for="n in [1,3,5]">
     {{ n }}
</li>
//展示1/3/5
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
这个错误是由于在Vue渲染过程中,尝试读取一个未定义或为空的属性'slice'引起的。具体来说,错误提示了无法读取undefined对象的'slice'属性。这个错误常见于使用v-for指令时,对一个未定义或为空的数组进行循环迭代。 根据提供的代码片段,问题可能出现在"typeIdPro.sysqalist"这个数组上。在代码中,使用了v-for指令来遍历这个数组,并对其进行slice操作。但是如果"typeIdPro.sysqalist"是未定义或为空,就无法对其进行slice操作,从而引发了这个错误。 解决这个问题的方法是,在渲染代码之前,确保"typeIdPro.sysqalist"已经被正确地定义和赋值。你可以检查数据的接口是否成功请求到了数据,如果数据请求失败或返回一个空数组,那么就需要相应地处理这种情况,比如在数据请求失败时显示一个错误提示,或者在数据为空时显示一个占位符。 另外,为了避免类似的错误,你还可以在使用v-for指令之前,使用v-if指令来判断数组是否已经定义或为空,只有在数组存在且不为空的情况下才进行循环迭代操作。这样可以防止出现类似的错误提示。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [解决[Vue warn]: Error in render: “TypeError: Cannot read properties of undefined (reading ‘*******...](https://blog.csdn.net/LanceYAZ/article/details/123957730)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [[Vue warn]: Error in render: "TypeError: Cannot read property 'slice' of undefined" found in](https://blog.csdn.net/dianwan5205/article/details/102082506)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火兰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值