【发布时间】:2017-11-23 13:45:03
【问题描述】:
我正在使用 VueJS 构建我的第一个项目,但我无法使用 v-if 获取模板来显示/隐藏。我有一个数据模型布尔变量(groups.categories.descEditable),我正在切换以显示/隐藏模板。出于某种原因,当我更改该值时,模板不会主动更新自身。
<tbody v-for="group in groups">
...
<tr v-for="cat in group.categories">
...
<td class="td-indent">
<input v-if="cat.descEditable" :value="cat.description" type="text" class="form-control">
<div v-else v-on:click="editDesc(cat.id)">{{ cat.description }}</div>
<div>{{cat.descEditable}}</div>
</td>
...
</tr>
</tbody>
methods: {
editDesc (cat_id) {
let vm = this
this.groups.forEach(function(group, gr_ind){
group.categories.forEach(function(cat, ind) {
if (cat_id == cat.id)
cat.descEditable = true
else
cat.descEditable = false
})
})
}
},
所以我希望文本输入显示 descEditable 是否为真(单击包含描述的 div 后),否则显示具有静态描述值的 div。 descEditable 属性似乎正在正确更新,但输入元素上的 v-if 没有对其做出反应。我一定是误解了 vuejs 的一些基本原理,只是无法弄清楚它是什么。
【问题讨论】:
-
我发现模板状态实际上是在内部更新,但由于某种原因它没有呈现。我通过调用 vm.$forceUpdate() 找到了解决方案,但这似乎并不是真正的“正确”答案。如果有人有更好的方法,请分享。
标签: javascript vue.js vuejs2