таких же вопрос, как здесь: 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, как ожидалось?
Как называется saveFn? –
Внутри конструктора вы можете сделать 'this.saveFn = this.saveFn.bind (this);'. Раздражающее решение, но оно работает. –
В вызове директивы. Поэтому в директиве, подобной этой: '