【发布时间】:2021-03-09 13:19:48
【问题描述】:
我使用Vue来传递函数函数且检查复选框时,更改事件不会触发该功能。我不确定问题是因为我将它写在mounted上还是其他任何东西上。
mounted() {
var self = this;
let id = this.$route.params.id;
var chkInfo = [];
chk.where("partId", "==", id).get()
.then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
var data = doc.data();
chkInfo.push({ chk_id: doc.id, d: data.detail, s: data.sequence, status: data.status });
});
let html = '';
for (let i = 0; i < chkInfo.length; i++) {
html += `
<li class="todo-item">
<input type="checkbox" value="" @change="updateTodo()" class="todo-item__checkbox">
<label class="word">${chkInfo[i].d}</label>
</li>
`;
}
self.todoList = html;
})
}
Vue 的模板。我使用componentKey重新加载组件,以便数据可以动态填充到界面。
<section>
<label>Checklist:<br/></label>
<input v-model.trim="newTodo" id="todo-box" placeholder=" Add new todo"/>
<button type="submit" @click.prevent="addTodo()" class="new-todo-button" :disabled="!todoFilled">Add</button>
<ul class="todo-list">
<div v-html="todoList"></div>
<div v-html="addList" :key="listKey"></div>
</ul>
</section>
【问题讨论】:
-
你在哪里定义了updateTodo函数?..我没看到
-
是的,我在那里的方法上写了它。目前,函数中除了控制台日志消息外没有编写任何代码,并且日志消息不会出现在控制台中。
-
为什么不使用模板部分来创建 Dom 而不是 JavaScript
-
我在 javascript 中创建 dom 以根据从 firestore 获得的数据动态填充界面。我只尝试了一小部分这种方法。另外,我已经在整个项目中使用了该方法,实际上我现在无法更改其他部分。