同じ問題を壊す:私はできる限り簡単に言えばのような小型でhttps://stackoverflow.com/a/26244600/2892106呼び出す関数は、ここのようにスコープ
:この回答に続きAngularJS directive binding a function with multiple arguments
。
これは動作します:付き
<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); }
});
しかし、私は、この休憩を活字体と実際のクラスを使用して変換するとき。
class MyController {
constructor() {}
saveFn(value) {
this.doSomethingWithValue(value);
}
}
デバッグ時のTypescriptバージョンでは、「this」がWindowグローバルを参照しています。だから私の範囲はどうにか乱れていますが、私はそれを修正する方法がわかりません。どのようにして "これ"がMyControllerを期待どおりに参照できるのでしょうか?
どうsaveFnが呼ばれているのですか? –
コンストラクタの中で、 'this.saveFn = this.saveFn.bind(this);'を実行することができます。迷惑な解決策ですが、機能します。 –
ディレクティブ呼び出しで。したがって、このような指示文では、 ''それは原因が原因だと思うので、なぜか分かりません。 –