Vue 关于v-if和v-for不能同时使用的问题

Vue 关于v-if和v-for不能同时使用的问题

           **首先我们先看一下官方文档是怎么写的,如下图,总结来说就是三点**
  1. v-if不能和v-for放在同一个标签里一起使用
  2. 当使用v-if来判断任何一个属性时,把属性跟改成计算属性(前提是v-if和v-for一起使用)
  3. 将v-if放置容器元素上

在这里插入图片描述

//html
	<div id="app">
			<ul v-if="Textone">
				<li v-for="i of Textone">我是{{i.name}},今年{{i.age}}岁了!</li>
			</ul>
		</div>
<script>
		var vm =new Vue({
			el:'#app',
			data:{
				arr: [{name:'小明',age:'18'},
					{name:'小红',age:'25'},
					{name:'小刚',age:'28'},
					{name:'小兰',age:'13'},
					{name:'小吕',age:'10'}
				]
			},
			computed:{
				Textone: function(){
					return this.arr.filter(function(i){
						return i.age>=18
						})
				}
			}
		})
	</script>
 **举个例子我们在data里面定义了一个arr数组,现在我们要进行筛选将大于或者等于18岁的人显示出来**

我们要进行if和for的一起使用。首先要把v-if放在容器标签上也就是我们的ul标签

//html
<ul v-if="Textone">

然后定义一个计算属性

<script>
			computed:{
				Textone: function(){
					return this.arr.filter(function(i){
						return i.age>=18
						})
				}
			}
	
	</script>
这里用到了一个JavaScript函数filter过滤函数这个可以自己去看一下我就不说明了

计算属性里面进行了我们的我们想要的结果的一个计算并且返回给我们的Textone方法

//html
			<ul v-if="Textone">

接下来就是在li标签循环出我们的定义的数组,有的小叮当就会问了为什么不直接循环arr呢,而是循环我们的Textone呢?

//html
				<li v-for="i of Textone">我是{{i.name}},今年{{i.age}}岁了!</li>

这是因为我们的程序是由上往下执行的首先执行我们的v-if代码块

//html
			<ul v-if="Textone">

他就会跳到我们的Textone计算属性里面

Textone: function(){
					return this.arr.filter(function(i){
						return i.age>=18
						})
				}

然后他在里面进行计算判断以后把结果返回给Textone,这时候我们就直接调用Textone循环出来就可以了

//html
				<li v-for="i of Textone">我是{{i.name}},今年{{i.age}}岁了!</li>

结果
在这里插入图片描述
循环输出arr的结果

//html
				<li v-for="i of arr">我是{{i.name}},今年{{i.age}}岁了!</li>

在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值