使用打字稿将依赖项注入angularjs指令

使用打字稿将依赖项注入angularjs指令,第1张

使用打字稿将依赖项注入angularjs指令

尝试这种方式

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)));


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4983134.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存