在进行项目开发的时候因为在一个标签上同时使用了v-for和v-if两个指令导致的报错。

报错代码如下:
<el-input
  type="textarea"
  :autosize="{ minRows: 2, maxRows: 8}"
  v-for="Oitem in Object.keys(cItem)"
  :key="Oitem"
  v-if="Oitem !== 'title'"
  v-model="cItem[Oitem]">
</el-input>

提示错误:The 'undefined' variable inside 'v-for' directive should be replaced with a computed property that returns filtered array instead. You should not mix 'v-for' with 'v-if'

原因:v-for 的优先级比 v-if 的高,所以每次渲染时都会先循环再进条件判断,而又因为 v-if 会根据条件为 true 或 false来决定渲染与否的,所以如果将 v-if 和 v-for一起使用时会特别消耗性能,如果有语法检查,则会报语法的错误。

1. 将 v-for 放在外层嵌套 template (页面渲染不生成 DOM节点) ,然后在内部进行 v-if 判断

<template v-for="Oitem in Object.keys(cItem)">
  <el-input
    type="textarea"
    :autosize="{ minRows: 2, maxRows: 8}"
    :key="Oitem"
    v-if="Oitem !== 'title'"
    v-model="cItem[Oitem]">
  </el-input>
</template>

注意点:key值写在包裹的元素中

2. 如果条件出现在循环内部,不得不放在一起,可通过计算属性computed 提前过滤掉那些不需要显示的项

<template>
  <div>
  <div v-for="(user,index) in activeUsers" :key="user.index" >{{ user.name }}</div>
  </div>
</template>
<script>
export default {
  name:'A',
  data () {
    return {
      users: [{name: 'aaa',isShow: true}, {name: 'bbb',isShow: false}]
    };
  },
  computed: {//通过计算属性过滤掉列表中不需要显示的项目
    activeUsers: function () {
      return this.users.filter(function (user) {
        return user.isShow;//返回isShow=true的项,添加到activeUsers数组
      })
    }
  }
};
</script>

最新文章

  1. LeetCode 387. First Unique Character in a String
  2. Android网络连接判断与处理
  3. 小结RunLoop
  4. 使用D3绘制图表(4)--面积图表
  5. 【翻译习作】 Windows Workflow Foundation程序开发-第一章03
  6. Linux 配置网络
  7. openerp学习笔记 视图更新时删除已存在的菜单或其他对象
  8. PHP 中xampp不能启动服务器的问题
  9. VS2013中C++创建DLL导出class类
  10. 一些有用的javascript实例分析(一)
  11. 怎么将GitHub上的项目下载到本地,并运行
  12. 【洛谷p1066】2^k进制数
  13. window的Navigator 对象
  14. 263A
  15. MyBatis 别名标签 &amp; sql的复用
  16. k8s 调度器
  17. 你知道吗, CoreGraphics绘图系统和Bezier贝塞尔曲线坐标系的顺时针方向是相反的!
  18. SSIS无法在unicode和非unicode 字符串数据类型之间转换
  19. iis原理介绍
  20. oracle时间段查询-从00:00:00开始

热门文章

  1. PostgreSQL VACUUM 之深入浅出 (二)
  2. [WPF] 使用 Effect 玩玩阴影、内阴影、 长阴影
  3. Windows原理深入学习系列-强制完整性控制
  4. 可视化BI软件为企业提升数据分析效率
  5. 如何制作BI看板报表?汽车保有量看板教程等你来学
  6. oracle 11g rac集群重启顺序以及常用管理命令简介
  7. Java基础--集合解析-ArrayList
  8. 「BUAA OO Unit 1 HW1」面向测试小白的简易评测机
  9. Java 中线程池的 7 种创建方式!
  10. 【实测】Python 和 C++ 下字符串查找的速度对比