vue 中v-if和v-for一起使用;p标签中可以放p标签吗?

1 篇文章 0 订阅

记录一下今天项目中踩的两个坑。
数据是从后台取的,然后通过v-for循环展现出来,由于一些原因,获取到后台返回的值是一个空对象,导致报错。想着直接v-if判断一下对象,如果是空就不编译就不会导致循环空对象报错。然后就有了下面的代码。

<div class="" >
    <p class="a">xxxx</p>
    <p class="value" v-if="item.info" v-for="arr in item.info.list" :key="arr.date">
        {{arr.money}} {{dateMonth(arr.date)}}</p>
</div>

接下来问题来了,发现加了v-if没有用,继续报错,就在纳闷为什么v-if没有限制住,难倒v-if和v-for不能一起用??
原因是v-for优先级比v-if高。
官网中说到:
不推荐同时使用 v-if 和 v-for。
v-ifv-for 一起使用时,v-for 具有比 v-if的优先级。
好吧,然后就想着拿多一个标签包住来进行判断

<div class="" >
    <p class="a">xxxx</p>
    <p v-if="item.info"> 
        <p class="value" v-for="arr in item.info.list" :key="arr.date">
        {{arr.money}} {{dateMonth(arr.date)}}</p>
    </p>
</div>

发现还是没有解决问题,打开控制台f12审查元素发现变成了三个并排的p标签,???p标签会自己跑出来
原来,p标签虽然是一个块标签,但是不可以存放别的块标签,p标签中放p标签是放不进去的,存放的块标签是在p标签外部的
好吧,改用了div标签来包裹
下面代码,终于解决了问题:

<div class="" >
    <p class="a">xxxx</p>
    <div v-if="item.info"> 
        <p class="value" v-for="arr in item.info.list" :key="arr.date">
        {{arr.money}} {{dateMonth(arr.date)}}</p>
    </div>
</div>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你可以在上一个问题的基础上继续修改,在按钮的点击事件添加判断逻辑,当 p 标签的背景颜色已经是黄色时,再次点击按钮时将背景颜色改回原来的颜色。 具体代码如下: ```html <template> <div> <div v-for="(item, index) in items" :key="index"> <p :style="{ backgroundColor: item.color }">{{ item.content }}</p> <button @click="changeColor(index)">{{ item.color === 'yellow' ? 'Reset Color' : 'Change Color' }}</button> </div> </div> </template> <script> export default { data() { return { items: [ { content: 'Red', color: 'red' }, { content: 'Blue', color: 'blue' }, { content: 'Green', color: 'green' }, ], }; }, methods: { changeColor(index) { // 判断当前 p 标签的背景颜色是否为黄色 if (this.items[index].color === 'yellow') { // 如果是黄色,则将背景颜色改为原来的颜色 this.items[index].color = this.items[index].content.toLowerCase(); } else { // 如果不是黄色,则将背景颜色改为黄色 this.items[index].color = 'yellow'; } }, }, }; </script> ``` 这里在按钮的文本添加了判断逻辑,当 p 标签的背景颜色为黄色时,按钮文本为 Reset Color,表示点击按钮可以将背景颜色改回原来的颜色;否则,按钮文本为 Change Color,表示点击按钮可以将背景颜色改为黄色。在按钮的点击事件,添加判断逻辑,当 p 标签的背景颜色为黄色时,将其改回原来的颜色;否则,将其改为黄色。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值