在Typescript中使用AngularJS控制器的范围

时间:2015-09-14 14:59:42

标签: angularjs scope typescript

情况: 我最近开始使用Typescript,目前正将它集成到我的AngularJS Web应用程序中。我一直在使用'controller as'语法而不是$ scope。

问题:我似乎无法找到替换var self = this;的正确方法 我开始用vm替换this,这很快就会让我在forEach函数,点击事件等内部陷入死胡同。

我的临时解决方案:在每个函数中强制转换var self = this;,因为据我所知,我无法全局转换它。它也不适用于所有情况。

我的问题:我错过了一些明显的东西吗?有没有更好的方法来访问控制器的范围?

1 个答案:

答案 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的功能

Further Explanation