angularjs - 将工厂注入(inject)到指令范围之外定义的指令链接函数中

标签 angularjs angularjs-directive

我看到了以下问题(以及其他类似问题),它解决了尝试将工厂注入(inject)指令的链接函数的问题:
Injecting service to Directive

我见过的解决方案将链接功能保持在指令的范围内:

angular.module('myapp')
    .directive('myDir', function(myService){
        return {
            restrict: 'E',
            scope: {
                frame: '='
            },
            link: function postLinkFn(scope, elem, attr) {
                myService.doSomething();
            }
        };
    });

但是,我希望能够将 postLinkFn 分离到组织的 .directive 范围之外,就像我可以使用 Controller 一样。

是否可以在将服务注入(inject)其中的同时分离此功能?

最佳答案

.directive('myDir', function(myService){
    var deps = { myService: myService };

    return {
        ...
        // myService is available as this.myService inside postLinkFn
        link: angular.bind(deps, postLinkFn)
    };
});
link函数没有使用依赖注入(inject)并且没有词法 this , 将注入(inject)的依赖项绑定(bind)到 this是一个合理的举动。

关于angularjs - 将工厂注入(inject)到指令范围之外定义的指令链接函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33611888/

相关文章:

javascript - 如何让 Google 索引 Angular.js 应用程序中的动态标题

javascript - 动态内容angular js的动态显示隐藏代码

angularjs - Angular 谷歌地图 : could not find a valid center property?

angularjs - 如何根据服务中的变量设置 ng-show

html - Bootstrap 中的标签全高

angularjs - 类型错误 : Cannot read property 'childNodes' of undefined in AngularJS directive

javascript - 查找 Angular 指令中的所有元素

javascript - AngularJS - 不尊重 Z-Index 更改上下滑动 Div

javascript - 每 10 个元素在 ng-repeat 中显示自定义指令

angularjs - 如何在调用 $setViewValue 后更新输入的值