我有一个子控制器调用父控制器中的函数的设置。父控制器中的方法被成功调用,但当我返回使用已修改函数的范围变量时,更改没有进行。
即。
第一个函数调用:
public showDetails(): void {
this.scope.menu.showDetails = true;
}
2cd函数调用:
// handle menu options
public selectMenuOption(type: string): boolean {
if (this.scope.menu.showDetails) { // value is still false
// DO STUFF
}
}
这两个函数都位于同一个控制器中,并且访问相同的控制器范围。
除了将值初始化为false的构造函数外,它不会在其他任何地方使用。
这与视图无关,控制器中的变量根本不更新。我知道要更新视图,你需要在某些情况下运行$ apply,并且我已尝试在showDetails()上使用$ apply来解决此问题。我刚刚得到的是一个非法的访问错误,这是你在$ digest循环中运行$ apply时得到的。
我发现罪魁祸首是通过子控制器来更新父控制器中的值。即使子控制器调用父控制器函数正常,它似乎也不会以这种方式影响父控制器范围。
要解决此问题,我会将此值添加到服务范围并以此方式更新父范围。我试图避免这一额外的步骤。除非某人有一个不涉及该服务的解决方案。
答案 0 :(得分:0)
从问题:
JavaScript 不是魔术。所以这种情况发生的唯一方法是:
console.log
是您调试此内容的最好朋友。 this
。尝试在所有成员函数中使用arrow function。