Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript vuejs if/else:检查元素是否存在else添加元素_Javascript_Vue.js_Vuejs2 - Fatal编程技术网

Javascript vuejs if/else:检查元素是否存在else添加元素

Javascript vuejs if/else:检查元素是否存在else添加元素,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我有一个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_variab

我有一个
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>
用户响应:

[[item.some\u variable\u to\u render]]
效果很好。然而,当
某些条件为真时,我想说
没有用户响应
,但是如果我添加
v-else
,消息(没有用户响应)将在每个循环中打印,这当然不是所希望的。如何解决这个问题

为此,我想知道是否可以测试元素
item.id+''uuuur''是否存在,如果不存在,是否可以添加一个文本为“无用户响应”的元素`

不过,我不确定这是正确的做法

编辑


只是重申一下:在
v-for
之前使用
v-if
不是一个选项,因为迭代的对象是一个加密的JSON,然后通过一些vuejs过滤器进行过滤,所以是的,这不是一个选项。

注意
boolVar
对应于包含bools的实际对象键


让model.flag=true
函数foo(val)=>{
model.flag=val
返回值
}
用户响应:

[[item.some\u variable\u to\u render]]
无用户响应请注意,
boolVar
对应于包含bools的实际对象键


让model.flag=true
函数foo(val)=>{
model.flag=val
返回值
}
用户响应:

[[item.some\u variable\u to\u render]]
无用户响应您可以使用CSS实现此功能:

ol + .no-responses {
  display: none;
}
下面有一个完整的示例,但是如果消息出现在
之后,则可以简单地隐藏消息。调整选择器以反映您的实际用例

我试图保持我的示例中的模板与原始代码完全相同,添加了相关消息和两个按钮用于演示

newvue({
el:“#应用程序”,
分隔符:['[',']]'],
数据(){
返回{
用户响应:[]
}
},
方法:{
加(){
this.UserResponses.push(
{some_condition:3,_is_true:3,id:3,要呈现的某个_变量:'A'},
{some_condition:3,_is_true:4,id:4,要呈现的某个_变量:'B'},
{some_condition:4,_is_true:4,id:5,some_变量_to_render:'C'},
{some_condition:5,_is_true:5,id:6,要呈现的某个_变量:'D'}
)
},
清楚(){
this.UserResponses.splice(0)
}
}
})
ol+。无响应{
显示:无;
}

用户响应:

[[item.some\u variable\u to\u render]]

无用户响应

增加价值 明确的价值观
您可以使用CSS实现此功能:

ol + .no-responses {
  display: none;
}
下面有一个完整的示例,但是如果消息出现在
之后,则可以简单地隐藏消息。调整选择器以反映您的实际用例

我试图保持我的示例中的模板与原始代码完全相同,添加了相关消息和两个按钮用于演示

newvue({
el:“#应用程序”,
分隔符:['[',']]'],
数据(){
返回{
用户响应:[]
}
},
方法:{
加(){
this.UserResponses.push(
{some_condition:3,_is_true:3,id:3,要呈现的某个_变量:'A'},
{some_condition:3,_is_true:4,id:4,要呈现的某个_变量:'B'},
{some_condition:4,_is_true:4,id:5,some_变量_to_render:'C'},
{some_condition:5,_is_true:5,id:6,要呈现的某个_变量:'D'}
)
},
清楚(){
this.UserResponses.splice(0)
}
}
})
ol+。无响应{
显示:无;
}

用户响应:

[[item.some\u variable\u to\u render]]

无用户响应

增加价值 明确的价值观

v-for
的同一
元素中使用
v-if
?@kerbholz:根据文档,这不是推荐的方法。我甚至不知道该如何工作。你能展示一些代码吗?为什么不使用v-else?如果没有用户响应,就不应该有呈现的模板。你能简单地拥有吗使用
v-if=“UserResponses.length”创建第二个模板“
?对,错过了,抱歉。同样,有一个例子说明了如何正确操作:将你的
v-if
放在
v-for
循环之外使用
v-if
在你的
v-for
上的同一
元素中?@kerbholz:根据文档,这不是推荐的方法。我甚至不知道那会怎样。你能展示一些代码吗?为什么不使用v-else呢?如果没有用户响应,应该没有呈现的模板。您可以简单地使用第二个模板
v-if=“UserResponses.length”
?好的,没有找到,抱歉。同样,这里有一个如何正确操作的示例:将
v-if
放在
v-for
loopHmm之外。。我不能这样做,因为
v-if
取决于
项目的删除-我现在已经通过编辑帖子明确了这一点。所以你说列表中可能有项目,但项目有点空?嗯。。好。不是每个循环中都会出现h1
?这不是这个方法的问题吗?这就是为什么你有一个else语句对吗?如果是真的,做这个,否则做那个。所以不是两件事都发生了我添加了第三个版本保持列表完整嗯。。我不能这样做,因为
v-if
取决于
项是否正确