У меня проблема с написанием угловых директив в машинописном тексте. Я хочу написать свои директивы, используя классы машинописного текста. Все работает отлично, кроме функции контроллера.
class myDirective implements ng.IDirective{
public priority :number = 999;
public require :String[] = ["ngModel","myDirective"];
public controller(){
var test = 1;
return {
reset : function(){
test = 0;
}
}
}
public link($scope: ng.IScope, elm: JQuery, attr: ng.IAttributes, ctrlArray: any){
var controller;
controller = ctrlArray[1];
controller.reset();
}
static factory(): ng.IDirectiveFactory{
var directive = () => new myDirective();
return directive;
}
}
export = myDirective;
Но при запуске этого в angular я получаю «undefined не является функцией», когда controller.reset() вызывается внутри функции ссылки. Когда я проверяю контроллер, я просто получаю прототип объекта, функция сброса не определена.
Когда я пишу свою директиву таким образом, она работает.
function myDirective(): ng.IDirective{
return {
priority: 999,
require: ["ngModel","myDirective"],
controller: function(){
var test = 1;
this.reset = function(){
test = 0;
}
},
link: function($scope: ng.IScope, elm: JQuery, attr: ng.IAttributes, ctrlArray: any){
var controller;
controller = ctrlArray[1];
controller.reset();
}
}
}
export = myDirective;
Разница заключается в способе написания функции контроллера. В классе машинописного текста, который я использую.
return {
reset : function(){
test = 0;
}
}
в функции, которую я использую
this.reset = function(){
test = 0;
}
К сожалению, машинописный текст не позволяет мне использовать второй способ внутри класса машинописного текста. Есть ли что-то, что мне не хватает, или я подхожу к этому совершенно не с той точки зрения?