【问题标题】:angularjs 1.5 component DI used on templateUrltemplateUrl 上使用的 angularjs 1.5 组件 DI
【发布时间】:2016-04-16 14:38:23
【问题描述】:

我已经检查了如何对控制器进行注入。但我找不到在控制器之前注入组件的方法。

在下面的示例中,我试图从我在另一个地方创建的 constants 中获取 domainUrl。

是否可以进行注入来检索 domainUrl

【问题讨论】:

    标签: angularjs angularjs-components


    【解决方案1】:

    这也是我遇到的问题。 不幸的是,我没有找到一个简单的解决方案。

    使用 angular.directive() 我正在注入 url 的服务。使用 angular.component() 你不能再这样做了。

    你可以使用一个普通的 JS 对象。或者也许是一个单身人士。

    我使用 Typescript 并最终使用具有静态属性的类来执行此操作。

    编辑:

    只是想通过一个小更新来扩展这个答案。

    因为我们不能再使用 AngularJS 的依赖注入机制,如果你想使用一些额外的代码来生成 URL,文件加载的顺序很重要。

    在下面的 Typescript 代码中,需要在任何 Angular 代码之前加载 MyRoutes 类才能使其工作。

    class NgMyComponent implements ng.IComponentOptions {
        templateUrl = MyRoutes.templateBase + 'my-component.html';
        controller = MyComponent;
        controllerAs = 'vm';
    }
    class MyComponent {
    }
    
    angular
        .module('MyModule')
        .component('myComponent', new NgMyComponent);
    

    缓解这种情况的一种简单方法是使用模板 Url 的函数,因此仅在实际创建组件时才构建 URL,如下所示:

    templateUrl = () => MyRoutes.templateBase + 'my-component.html';
    

    【讨论】:

      猜你喜欢
      • 2016-02-23
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 2016-03-29
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      相关资源
      最近更新 更多