【发布时间】:2017-08-03 15:35:16
【问题描述】:
在将此问题标记为重复之前...我知道您在想什么,这已被问过无数次,但并不完全正确。
我在研究期间从各种来源(包括官方文档,以及 Angular Guru 和传道者)知道$onInit 块通常保留用于 依赖于 Angular 完成所有绑定的初始化工作/逻辑。
然而,变量初始化并不真正符合这个“工作/逻辑”的定义。特别是其中没有任何角度逻辑的变量。因此,ES6 构造函数似乎更适合变量初始化。对于需要词法绑定范围的回调方法绑定也是如此:
class myController() {
constructor() {
this.myVariableOne = 1,
this.myVariableTwo = 2,
this.myVariableThree = 3;
this.myMethod = this.myMethod.bind(this);
}
$onInit() { }
myMethod() {
console.log(this.myVariableOne, this.myVariableTwo, this.myVariableThree);
}
}
虽然这看起来很适合遵循“角度方式”做事,仅使用$onInit 块进行初始化工作/逻辑,我也看到很多人说角度控制器类构造函数只能用于依赖注入设置。
所以,这让我很困惑。构造函数似乎是最适合变量初始化和方法绑定的块,而$onInit 似乎并不真正适合该角色,但目前还不清楚我应该使用什么。有人可以帮我弄清楚我应该将变量定义和方法绑定放在哪里吗?
【问题讨论】:
-
上面的代码中没有this.myVariableOne等
-
哎呀,抱歉,已修复。
标签: javascript angularjs controller ecmascript-6 angular1.6