【发布时间】:2019-10-17 10:19:30
【问题描述】:
更新数据属性不会更新动态类。
已尝试通过计算值设置数据属性。
<div class="customize-box" v-on:click="select" v-bind:class="{active: customizeBoxVisible}"></div>
<script>
export default {
data() {
return {
isSelected: false
}
},
computed: {
customizeBoxVisible: {
get() {
return this.isSelected;
},
set(value) {
this.isSelected = value;
}
}
},
methods: {
select() {
this.isSelected = true;
}
}
}
</script>
在 chrome 开发工具中检查组件数据显示 customizeBoxVisible 设置为 true。在开发工具中切换 isSelected 后,将应用类。
【问题讨论】:
-
出于好奇,
v-bind:class="{ active: isSelected }"有效吗? -
是的,如果我在 vue 开发工具中将初始值设置为 true 或将其从 false 切换为 true,则会按预期应用类。
-
我也尝试过将 v-bind:class 更改为使用对象:
<div class="customize-box" v-on:click="select" v-bind:class="{active: object.isSelected}">,将数据更新为:data() { return { object: {isSelected: false} } },,然后在选择方法中:select() { this.$set(this.object, 'isSelected', true); } -
我也尝试过提交 isSelected 以通过突变存储,然后使用 getter 从计算属性返回。