javascript - Vue Js动态类绑定未更新
问题描述
我一直在使用惯用的 todo 应用程序学习 Vue Js。
我根据 todo.completed 的真值将一个类绑定到我的 todo 对象,如下所示:
<a v-bind:class="{iscomplete : todo.completed}">
<input type="checkbox" v-on:change="markComplete" />
iscomplete 类只是通过文本修饰添加一行。
该复选框调用以下方法:
methods: {
markComplete() {
this.todo.completed = !this.todo.completed;
}
以上适用于 DOM 中已经存在的任何待办事项,但是当添加新的待办事项时,动态类绑定不再有效。
我在下面包含了一个简短的 gif,显示了这个问题。
我似乎找不到任何答案,也许我缺乏 Vue 经验导致我搜索不正确的术语。如果在我似乎无法理解它/在网上找到类似问题之前有人问过这个问题,我深表歉意。
解决方案
好的,事实证明这些方法对于注入 DOM 的新元素工作正常。在构建我的新 todo 对象时,我使用了属性“完成”来“假”而不是“完成” 。
prepareTodo: function () {
const newTodo = {
id: Math.random(2),
description: this.todoDescription,
complete: false,
};
因此,当该方法被触发时,它正在更新一个不应该存在且未被引用的属性。
推荐阅读
- typescript - 负类型断言返回谓词
- flutter - 如何在 Flutter 的另一个全宽屏幕上创建一个 1/3 宽度的屏幕?
- swift - SwiftUI:使用计时器时,每次的平均执行次数会保持不变吗?
- reactjs - React 功能组件 UseEffect 不
- amazon-web-services - Athena bigint 和 double 在同一列上有错误
- installation - 使用 Wix 重命名现有文件夹
- python-3.x - [:] 在覆盖 for 循环中的列表中的作用是什么?
- javascript - 无法读取未定义的属性(读取“setState”)
- python - 使用 pip 卸载具有依赖项的软件包
- quote - VBX 转义多个双引号