【问题标题】:angularjs provider injector.getangularjs 提供程序 injector.get
【发布时间】:2015-06-04 23:06:41
【问题描述】:

有没有办法在运行时使用字符串获取提供者实例/对象?我可以使用这种方式获得工厂:

var injector  = angular.injector(["myApp", 'ng']);
var keyf1 = injector.get('keyF1');  //-- providing it exists

但如果为提供者完成,injector.get 似乎会返回提供者的新实例;这会导致问题,因为提供程序中有状态数据,所以新实例不是我需要的 - 我需要使用字符串名称访问当前实例。

我的猜测是,可以通过将状态数据放入提供程序的配置部分来解决它,但我不确定这是最好的方法。

【问题讨论】:

    标签: angularjs provider


    【解决方案1】:

    Providers 用于在配置时配置工厂,在 Angular.js 应用程序开始运行之前。我们应该使用它们来配置工厂在运行时的行为方式。所以,我认为您需要做一些 hack 才能在运行时访问提供程序。

    您可以尝试改变您的方法。你可以把你的有状态数据放到工厂里。如果你能举个具体的例子,我可以试着做一个更好的评论。

    另外,这是一个很好的比较:https://stackoverflow.com/a/15666049/158523

    【讨论】:

    • 是的,这是一个选项——我在代码中使用工厂来处理一些事情——但希望在配置部分提供我没有从工厂获得的灵活性并且我可能需要的情况下保留提供者。但是,是的,这是另一种选择 - 远离提供者,或使用名称进行动态引用。
    • .. 有趣的是,可以在运行时引用工厂实例,但不能引用提供者。
    猜你喜欢
    • 1970-01-01
    • 2017-08-28
    • 2016-03-30
    • 2017-05-08
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2013-06-23
    相关资源
    最近更新 更多