我确信这是一个菜鸟错误,所以请原谅我,因为我是AngularJS的新人(本周)。
我有一个输入,如下面的复选框,它连接到ng-change事件。
<input type="checkbox" ng-model="vm.hasCondoKey" ng-change="vm.onKeyCheckboxChange()" />
该^事件触发并运行控制器中的“onKeyCheckBoxChange”函数。
export class CondoKeyController {
public condoKey: AdditionalItemModel;
public additionalItems: AdditionalItemModel[];
public hasCondoKey: boolean = false;
static $inject = ["$scope","CondoKeyService"];
constructor($scope: any, CondoKeyService: ICondoKeyService) {
$scope.additionalItems.forEach((addOn: AdditionalItemModel, index: number, addOnArray: AdditionalItemModel[]) => {
if (addOn.typeId === Models.AdditionalItemType.CONDO_KEY && addOn.quantity > 0) {
this.condoKey = addOn;
this.hasCondoKey = true;
}
});
}
public onKeyCheckboxChange(): void {
console.log("Checkbox changed.");
if(this.hasCondoKey === true) {
this.condoKey.typeId = AdditionalItemType.CONDO_KEY;
this.condoKey.quantity = 1;
if(!this.addOnsContainCondoKey()) {
this.additionalItems.push(_this.condoKey);
}
} else {
this.condoKey.quantity = 0;
}
}
}
“CondoKeyController”嵌套在父级中,父级通过指令将数组“additionalItems”传递给此控制器。我可以在其他函数中看到这些其他变量,并在构造控制器时使它们很好地进入控制器。
我的问题是在函数“onKeyCheckBoxChange”中我可以访问“this.hasCondoKey”但我无法访问任何其他值,例如“this.condoKey”或“this.additionalItems”。
我认为这与我的函数的范围和上下文有关,因为它来自一个复选框事件,但后来我推断我不应该访问“this.hasCondoKey”值。此值从我的断点读取为“true”,因此它已从其初始化值更改。
有谁知道为什么我可以访问某些变量而不是其他变量?另外我如何访问其他变量?
Angularjs 1.6.6 打字稿~2.3.1
答案 0 :(得分:1)
添加一些调试帮助日志到该方法:
public onKeyCheckboxChange(): void {
console.log("Checkbox changed.");
console.log(this.condoKey);
console.log(this.additionalItems);
// ...
}
检查结果。 condoKey
和additionalItems
可能未定义,这意味着它们永远不会被设置。