【发布时间】:2018-08-02 16:03:18
【问题描述】:
一个表单用于提交文本和两个选项告诉 vue 在哪一列显示文本。当 col2 单选按钮被选中时,提交的文本应该显示在第 2 列。这不会发生,第 1 列的文本是显示。
我有两个单选按钮,它们应该将值“一”或“二”传递给 newInfo.option 在 submnit 上,一个方法将表单数据推送到数组“信息”。
<input type="radio" id="col1" value="one" v-model="newInfo.col">
<input type="radio" id="col2" value="two" v-model="newInfo.col">
这些数据被正确地推送到数组“信息”中,我可以遍历它。我知道这是有效的,因为我可以遍历数组,console.log 中的所有数据。所有提交的表单数据都在那里。
接下来我在模板中遍历这个数组两次。一次用于 info.col==="one",其他迭代仅应在 info.col==="two" 时显示。我正在同时使用 v-for 和 v-if,vue.js 文档说可以这样做,
https://vuejs.org/v2/guide/conditional.html#v-if-with-v-for
<div class="row">
<div class="col-md-6">
<ol>
<li v-for="item in info" v-if="item.col==='one'">
text: {{ item.text }}, col: {{ item.col }}
</li>
</ol>
</div>
<div class="col-md-6">
<ol>
<li v-for="item in info" v-if="!item.col==='two'">
text: {{ item.text }}, col: {{ item.col }}
</li>
</ol>
</div>
</div>
完整的 vue.js 代码在 github here
它在 gh-pages here 上运行
【问题讨论】:
-
我遇到了同样的问题。这个link 解释了为什么它不起作用,你应该对数组和对象做什么
-
用 v-show 代替 v-if 怎么样?我知道该元素仍然存在,但它会被隐藏。
-
您可以在
v-for指令中使用 Javascript。例如,item in myFilter(info)。 -
您提供的 Guid 链接还指出
v-if的优先级高于v-for。这意味着它会在item甚至有值之前尝试评估item.col。
标签: vue.js radio-button v-for