情况: 我最近开始使用Typescript,目前正将它集成到我的AngularJS Web应用程序中。我一直在使用'controller as'语法而不是$ scope。
问题:我似乎无法找到替换var self = this;
的正确方法
我开始用vm
替换this
,这很快就会让我在forEach函数,点击事件等内部陷入死胡同。
我的临时解决方案:在每个函数中强制转换var self = this;
,因为据我所知,我无法全局转换它。它也不适用于所有情况。
我的问题:我错过了一些明显的东西吗?有没有更好的方法来访问控制器的范围?
答案 0 :(得分:5)
Fat Arrow有助于救援!!!
确实没有必要在TypeScript中使用var self = this
...
胖箭头函数保留回调函数内的(词法)范围(含义):
var self = this;
fooService.doSomething()
.then(result => {
console.assert(this === self); // this is valid and true
});
对于您的具体示例:
items.forEach((item) => {
this.somethingElse = item; // (no need for self)
});
注意这不是TypeScript的功能,更是ES6 / ES2015的功能