尝试这种方式:
class SetFocus implements ng.IDirective { //Directive settings restrict :string = 'EA'; scope : any= {}; //Take timeout argument in the constructor constructor(private $timeout: ng.ITimeoutService) { } link: ng.IDirectivelinkFn = ($scope: ng.IScope, $element: ng.IAugmentedJQuery, $attrs: ng.IAttributes) => { //refer to the timeout this.$timeout(function() { $element[0].focus(); }, 0); } //Expose a static func so that it can be used to register directive. static factory(): ng.IDirectiveFactory { //Create factory function which when invoked with dependencies by //angular will return newed up instance passing the timeout argument var directive: ng.IDirectiveFactory = ($timeout:ng.ITimeoutService) => new SetFocus($timeout); //directive's injection list directive.$inject = ["$timeout"]; return directive; }}directives.directive('setFocus', SetFocus.factory());
您现在拥有的方式可能有问题。由于未更新指令工厂,因此其构造函数将
this作为全局对象执行。这样,你就不会最终有一个巨大的构造函数,还可以以适当的类写
安永 方式。
如果您注入了许多依赖关系,而不是在工厂中重复这些参数,则可以执行以下 *** 作:
var directive: ng.IDirectiveFactory = (...args) => new (SetFocus.bind.apply(SetFocus, [null].concat(args)));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)