【发布时间】:2020-04-20 12:45:07
【问题描述】:
我有一个像这样的v-for:
<p> User Responses(s):</p>
<template v-for="item in UserResponses">
<ol v-if="item.some_condition==item._is_true">
<li :name="item.id + '__UR'"> [[ item.some_variable_to_render ] ]] </li>
</ol>
</template>
效果很好。但是,我想做的是在some_condition_is_true 失败时说No user responses,但是如果我添加v-else,则消息(没有用户响应)将在每个循环中打印,这当然是不希望的。如何解决这个问题?
为此,我想知道我是否可以测试元素item.id + '__UR'" is present and if not add an element with text saying没有用户响应`
但我不确定这是解决此问题的正确方法。
编辑
重申一下:在 v-for 之前使用 v-if 不是一个选项,因为被迭代的对象是一个嵌套的 JSON,然后通过一些 vuejs 过滤器进行过滤,所以是的,这不是一个选项。
【问题讨论】:
-
在您的
v-for旁边的同一<template>元素中使用v-if? -
@kerbholz:根据文档,这不是推荐的方法。我什至不确定这将如何工作。你能显示一些代码吗?
-
为什么不使用 v-else?
-
如果没有用户响应,则应该没有呈现的模板。您可以简单地使用
v-if="UserResponses.length"来创建第二个模板吗? -
对,错过了,抱歉。在同一个 guide page 上,有一个如何正确执行此操作的示例:将您的
v-if放在您的v-for循环之外
标签: javascript vue.js vuejs2