【发布时间】:2019-11-30 20:43:30
【问题描述】:
我有一个项目列表 - 每个项目都有一个 isDefault 属性。 item.isDefault的初始值为false。
我有一个按钮,该按钮带有一个切换“isDefault”的方法 - 应该更改项目上的 css 类(字体很棒的类。加载了字体很棒的 css,并且该类在使用时可以工作在页面上作为静态 html)。
<div v-for="(item, index) in items">
<button class="button" @click="toggleDefault(index)">
<span class="icon is-small">
<i class="fas" :class="item.isDefault ? 'fa-check' : 'fa-minus' "></i>
</span>
<span>is item default? {{item.isDefault}}</span>
</button>
</div>
我的 toggleDefault 方法有效 - 我将项目索引传入,然后执行:
toggleDefault(i) {
this.items[i].isDefault = !this.items[i].isDefault;
}
确实,我可以在开发工具和 html 中看到值从 true 变为 false,并且可以将更改记录到控制台...
但是 css 类没有改变。通过检查器查看,它仍然是“fa-minus”。我在其他地方使用相同的模式并且它有效?我在做傻事吗?
** 编辑 ** 添加了我的 JS - isDefault 在每个项目上定义... toggleDefault 切换值 - 但类仍然没有改变...
const app = new Vue({
el: '#app',
data: {
items: [
{
name: 'foo',
isDefault: false,
},
{
name: 'bar',
isDefault: false,
}
],
},
methods: {
toggleDefault(i) {
this.items[i].isDefault = !this.items[i].isDefault;
}
}
})
【问题讨论】:
-
检查是否有任何不相关的错误阻止您更新类,因为我复制了您的代码并且它有效,可以在检查器 html 中看到类的变化
-
items在哪里以及如何定义?发生这种情况的唯一方法是,如果您的项目对象在其初始数据中实际上没有isDefault属性 -
向按钮添加一个类 - 它改变了!但是图标上的类没有....
标签: vue.js