【发布时间】:2017-02-15 16:35:16
【问题描述】:
我正在尝试从指令中调用控制器函数,但遇到了“this”上下文问题。如果函数通过指令调用,则 logSerivce 无法访问。
这里是控制器类:
class MainController implements IMainScope {
static $inject = ["LogService"];
constructor(private logService:ILogService) { }
sayHello(message:string) {
console.log("MainController sayHello", message);
// Cannot read property 'logService' of undefined if gets call from directive
this.logService.log(message);
}
}
这里是指令类:
class TestDirective implements ng.IDirective {
public restrict = "E";
public templateUrl = "test-directive.html";
public replace = true;
public scope:any = {
testFn: "&"
};
constructor() { }
public link:ng.IDirectiveLinkFn = (scope:TestDirectiveScope, element:ng.IAugmentedJQuery, attrs:ng.IAttributes):void => {
scope.hello = () => {
console.log("TestDirective", scope.firstName);
scope.testFn()(scope.firstName);
};
}
static factory():ng.IDirectiveFactory {
let directive:ng.IDirectiveFactory = () => new TestDirective();
return directive;
}
}
这是一个简单的 plunker 示例,它涵盖了我的问题:http://embed.plnkr.co/Ov7crFZkkjDPzilX2BmL/
【问题讨论】:
标签: angularjs typescript angularjs-directive