调用函数中断范围

时间:2016-08-04 21:44:56

标签: angularjs angularjs-directive typescript

与此处相同的问题:AngularJS directive binding a function with multiple arguments

以下答案:https://stackoverflow.com/a/26244600/2892106

尽可能简单。

这有效:

<my-directive on-save="ctrl.saveFn"></my-directive>

使用:

angular.module('app')
.controller('MyController', function($scope) {
  var vm = this;
  vm.saveFn = function(value) { vm.doSomethingWithValue(value); }
});

但是当我转换为Typescript并使用真正的类时,这会破坏。

class MyController {
  constructor() {}

  saveFn(value) {
    this.doSomethingWithValue(value);
  }
}

在调试时的Typescript版本中,&#34;这个&#34;正在引用Window全局。所以我的范围在某种程度上搞砸了,但我不知道如何解决它。我怎样才能得到这个&#34;这个&#34;按预期引用MyController?

1 个答案:

答案 0 :(得分:0)

  

所以我的范围以某种方式搞砸了

使用箭头功能代替方法。

固定

class MyController {
  constructor() {}

  saveFn = (value) => {
    this.doSomethingWithValue(value);
  }
}

更多

https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html