我必须使用Petite-Vue有条件地呈现列表中的元素.但是,将具有v-if属性的<li>标记放置在具有v-for属性的<template>标记中会生成以下错误:

UnauCapt(In Promise)TypeError:无法读取Null的属性(读取""InsertBepret"")

因此,我需要的这段代码不起作用:

<ul>
      <template v-for="item in ['a', 'b', 'c']">
           <li v-if="['a', 'b'].includes(item)">{{ item }} is included in ['a', b'']<p></p></li>
           <li v-if="['a', 'b'].includes(item)"><hr/></li>
           <li v-if="item === 'c'"><p> item is c</p></li>
      </template>
</ul>

但是,如果有条件呈现的元素不是放在<template>中,而是放在具有v-for属性的<div>标记中,那么它就可以工作.因此,这是可行的:

<div>
      <template v-for="item in ['a', 'b', 'c']">
           <p v-if="['a', 'b'].includes(item)">{{ item }} is included in ['a', b'']</p>
           <hr v-if="['a', 'b'].includes(item)" />
           <p v-if="item === 'c'"> item is c</p>
      </template>
</div>

有没有办法使用Vue根据当前通过数组或对象的迭代,有条件地呈现<li>个元素?

推荐答案

展望at this,我想这是一个众所周知的问题,但也是petite-vue的局限性的一部分.

我怀疑它可能根本不支持该功能,但您可以随时编写以下代码

<script src="https://unpkg.com/petite-vue" defer init></script>

<div>
  <ul v-for="item in ['a', 'b', 'c']">
      <li v-if="['a', 'b'].includes(item)">{{ item }} is included in ['a', b'']<p></p>
      </li>
      <li v-if="['a', 'b'].includes(item)">
        <hr />
      </li>
      <li v-if="item === 'c'">
        <p> item is c</p>
      </li>
  </ul>
</div>

增加了在没有循环的情况下不创建空ul的好处.

Vue.js相关问答推荐

Vue 3 需要 main.js 中的文件

vue3 输入标签给出错误 Vue.use 不是函数

为什么普通对象在 Vue3 中自动变成响应式的?

拖入 vue2-google-map 后如何获取标记位置?

Vue.js 和观察者模式

使用 Laravel 作为后端刷新 Vue.js SPA 的身份验证令牌

Vuex 和 Event Bus 有什么区别?

确保在渲染组件之前加载 Vuex 状态

VueJS + Typescript:类型上不存在属性

Vue.js 如果在视图中

取消选中单选按钮

从我的服务访问路由实例

Vue:如何在按钮单击时调用 .focus()

错误:Node Sass 尚不支持您当前的环境:Linux 64-bit with Unsupported runtime (88)

按键删除对象不会更新vue组件

emit更新数组不起作用

脚本npm run dev和npm run watch是做什么用的?

Vue.JS 2.0 修改不相关数据时速度慢

带有 Firebase 云消息传递的 Vue pwa 无法正常工作

在 Vuejs 中全局导入 Axios 方法