vue.js - vue.js: ":class" 导致 classList 错误
问题描述
像这样很酷
'<div class="item" :class="{'editable':canEdit}"></div>';
- 将'canEdit'设置为false-----'div'的类是“item”
- '$("div").addClass("on")' ------'div'的类是"item on"
- 将 'canEdit' 设置为 true -------- 'div' 的类是“项目可编辑”
问题:为什么“div”的类不是“可编辑的项目”
解决方案
因为您没有使用 Vue 向元素添加类。所以 Vue 不知道你已经向元素添加了一个新类。
请参阅此示例,其中我添加了一个不使用 Vue 的类:
new Vue({
el: '#app',
template: `
<div>
<div ref="e" class="a" :class="{ b: b }"></div>
<button @click="toggleB">Toggle B</button>
<button @click="addC">Add C</button>
</div>
`,
data(){
return {
b: true
}
},
methods: {
toggleB(){
this.b = !this.b;
},
addC(){
this.$refs.e.classList.add('c');
}
}
});
.a {
width: 100px;
height: 100px;
}
.b {
border: 1px solid black;
}
.c {
background: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app"></div>
现在,如果我使用 Vue 向它添加类,它将起作用,因为现在 Vue 知道:
new Vue({
el: '#app',
template: `
<div>
<div class="a" :class="{ b: b, c: c }"></div>
<button @click="toggleB">Toggle B</button>
<button @click="addC">Add C</button>
</div>
`,
data(){
return {
b: true,
c: false
}
},
methods: {
toggleB(){
this.b = !this.b;
},
addC(){
this.c = true;
}
}
});
.a {
width: 100px;
height: 100px;
}
.b {
border: 1px solid black;
}
.c {
background: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app"></div>
推荐阅读
- python - 图像处理中的内存管理
- matlab - 朴素的高斯消除 Matlab 问题
- amazon-web-services - 销毁 AWS-CDK 中的堆栈时不要删除现有资源
- ios - 每次重新打开浏览器时都忘记了 Django 会话 cookie - 移动 Safari(iphone、ipad)
- java - Spring Boot:创建自定义 Jsp 标记 - 无法找到 taglib
- html - 如何修复我的 GitHub Pages 站点上的 Sass?
- gitlab - gitlab 的标准安装产生 404
- deep-linking - 如何在pdf文档中创建一个非常深的链接
- haskell - c 头文件更改后 Cabal 不重建项目
- android - React Native Android:如何检查项目是否使用来自 Homebrew 或 gradle-wrapper.properties 的 Gradle 版本?