我有一个帮助器类,当选中复选框时将元素推入数组,并且在取消选中时应删除该元素。我能够成功地将元素推送到数组但是无法将其删除。
我注意到一些奇怪的行为。例如,取消选中该元素也会将其推送到数组中,而不是将其从数组中删除。如果我控制台记录索引值,我为每个我想要删除的数组元素得到-1。
这是Blaze Code:
Template.Job_setup_page.onCreated(function homePageOnCreated() {
this.checkedJobs = [];
});
Template.Job_setup_page.events({
'click .filled-in'(event, instance) {
var currentId = event.target.id;
if($(".filled-in").is(':checked')){
instance.checkedJobs.push({
instruction: currentId,
quantity: 1
})
}
else {
var index = instance.checkedJobs.indexOf(currentId);
instance.checkedJobs.splice(index, 1);
console.log("This is the current Id", currentId);
console.log("this is the index", index);
};
},
});
答案 0 :(得分:0)
indexOf
搜索元素本身,并且无法通过其instruction
属性匹配对象。您应该使用for循环迭代checkedJobs
数组并将每个instruction
与currentId
进行比较,以便找到正确的索引。用以下内容替换else
块的内容:
var jobs = instance.checkedJobs
for (var i = 0; i < jobs.length; i++) {
if (jobs[i].instruction === currentId) {
instance.checkedJobs.splice(i, 1)
console.log('currentId:', currentId)
console.log('index:', i)
}
}