【发布时间】:2019-07-29 00:37:54
【问题描述】:
我有一个复选框组,我想获取所有选中的项目。我正在尝试将一个数组传递给一个函数,以便我可以获取所有选中的项目,但它不起作用。
checkedCategory: Array<number>;
contains(checkedArr: Array<number>, id: number): boolean {
if (checkedArr instanceof Array) {
return checkedArr.indexOf(id) > -1;
} else if (!!checkedArr) {
return checkedArr === id;
}
return false;
}
private add(checkedArr: Array<number>, id: number) {
if (!this.contains(checkedArr, id)) {
console.log('add: ' + checkedArr);
if (checkedArr instanceof Array) {
checkedArr.push(id);
} else {
checkedArr = [id];
}
}
}
private remove(checkedArr: Array<number>, id: number) {
const index = checkedArr.indexOf(id);
if (!checkedArr || index < 0) {
return;
}
checkedArr.splice(index, 1);
}
toggleCategory(id: number) {
if (this.contains(this.checkedCategory, id)) {
this.remove(this.checkedCategory, id);
} else {
this.add(this.checkedCategory, id);
}
}
我的复选框中有一个(单击)事件,它将调用切换类别
(click)="toggleCategory(category.id)"
然后,当我尝试控制台记录“checkedCategory”时,它是未定义的。
我有 3 个复选框组,我想重用“包含/添加/删除”功能,这就是我想传递数组的原因。
谢谢
【问题讨论】:
-
checkedCategory分配到哪里? -
@CertainPerformance 我将它传入包含 ans checkedArr
-
当然可以,但是它从哪里来的?你从来没有在你发布的代码中定义它(这很可能是为什么,当你尝试记录它时,它是未定义的)
-
@CertainPerformance 不是这个吗?已检查类别:数组;对不起,我是个新手。如果不是这样。我应该怎么做才能拥有 3 个可以存储所选项目的数组。我很困惑。
-
那只是定义了它的类型,没有
=(=,赋值运算符,需要给变量赋值)
标签: javascript arrays angular typescript parameter-passing