2016-08-04 3 views
0

таких же вопрос, как здесь: 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); } 
}); 

Но когда я конвертировать в машинописном и использовать реальные классы, это разрывы.

class MyController { 
    constructor() {} 

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

В версии Typcript при отладке «это» ссылается на глобальное окно. Таким образом, моя область как-то перепуталась, но я не знаю, как ее исправить. Как я могу получить «это», чтобы ссылаться на MyController, как ожидалось?

+0

Как называется saveFn? –

+1

Внутри конструктора вы можете сделать 'this.saveFn = this.saveFn.bind (this);'. Раздражающее решение, но оно работает. –

+0

В вызове директивы. Поэтому в директиве, подобной этой: '