当前位置: 首页 > 面试题库 >

在应用配置Angular.js中的自定义提供程序中使用$ http

宋鸿
2023-03-14
问题内容

主要问题-可能吗?我没有运气就尝试了..

主app.js

...
var app = angular.module('myApp', ['services']);
app.config(['customProvider', function (customProvider) {

}]);
...

提供者本身

var services = angular.module('services', []);
services.provider('custom', function ($http) {
});

而且我有这样的错误:

Uncaught Error: Unknown provider: $http from services

有任何想法吗?

谢谢!


问题答案:
  • 不能 将服务注入提供者配置部分
  • CAN 注入服务成初始化提供者的服务的部分

细节:

Angular框架有两个阶段的初始化过程:

阶段1:配置

在此config阶段,将初始化所有提供程序,并config执行所有部分。这些config部分可能包含配置提供程序对象的代码,因此可以将它们与提供程序对象一起注入。但是,由于提供者是服务对象的工厂,并且在此阶段,提供者尚未完全初始化/配置->
**您不能在此阶段要求提供者为您创建服务-

在配置阶段您不能使用/注入服务**。此阶段完成后,所有提供程序都准备就绪(配置阶段完成后,无法再进行任何提供程序配置)。

第二阶段:跑步

run阶段期间,run将执行所有部分。在此阶段 ,提供者已准备就绪,可以创建服务- >在此run阶段,您可以使用/注入服务

例子:

1.将$http服务注入提供者初始化功能 无法正常工作

//ERRONEOUS
angular.module('myModule').provider('myProvider', function($http) {
    // SECTION 1: code to initialize/configure the PROVIDER goes here

(executed during config phase)

    this.$get = function() {
        // code to initialize/configure the SERVICE goes here (executed

during run stage)

        return myService;
    };
});

由于我们试图将$http服务注入到在该config阶段执行的函数中,因此会出现错误:

Uncaught Error: Unknown provider: $http from services

该错误实际上是在说$httpProvider用于创建$http服务的尚未准备就绪(因为我们仍处于config阶段中)。

2.将$http服务注入服务初始化功能 起作用:

//OK
angular.module('myModule').provider('myProvider', function() {
    // SECTION 1: code to initialize/configure the PROVIDER goes here (executed during `config` phase)
    ...

    this.$get = function($http) {
        // code to initialize/configure the SERVICE goes here (executed during `run` stage)

        return myService;
    };
});

由于我们现在将服务注入到服务初始化函数中,该函数在run阶段中html" target="_blank">执行,因此该代码将起作用。



 类似资料:
  • 我将为我的网站创建自定义用户提供程序,对于用户来说,没有“用户名”和“密码”这样的概念(实际上有类似于密码的东西,但它的名称不同)。在文档中,用户实体必须实现来自安全包的UserInterface,该安全包具有诸如getUsername、getPassword之类的方法。我能用我自己的领域吗?或者我应该使用名称冲突(例如,getUsername将返回我的唯一字段)来实现我的行为吗?

  • 我正在基于Dropwizard v0.9.1构建一个web堆栈。堆栈中的所有日志都通过AppenderFactory接口的自定义实现发送到Loggly: 此类未在我的应用程序类中的环境中注册。相反,它似乎是Dropwizard基于@JsonTypeName注释自动连接的。尽管如此,和字段由出现在我的配置yaml文件中的值填充: 问题是,这些配置值不会出现在应用程序的配置类中,这意味着在构建其他资源

  • 编辑: 我的理解可能是错误的,但这是一个不同于以编程方式设置语言环境的问题,因为我已经实现了那里建议的答案,我仍然有一些问题。 在这个问题中,我请求帮助解决这些问题(在设置的语言环境中没有参考的问题)。 原始帖子 我试图在我的应用程序中实现自定义语言环境,并遇到几个问题。 在调用setContentView之前,我在所有活动中使用以下代码: 编辑: 我还测试了它与: 我添加到Android中的所有

  • 我正在使用Symfony Security和系统中的自定义用户提供程序。它通过web服务为用户提供服务。 我根据本教程配置提供程序(http://symfony.com/doc/current/cookbook/security/custom_provider.html). 这里是检查用户的功能: 这很好,函数使用用户名调用一个web服务,然后返回一个包含用户数据的数组。但是现在我需要通过另一个w

  • 问题内容: 对我先前的问题采取了后续行动。我正在尝试使用JSR-330标准注释和jersey捆绑的HK2框架注入应用程序配置数据。 理想情况下,我想为注释创建一个自定义,该自定义将在或对象中查找所需的值,该值将从其他地方读取的数据中填充。在我的第一次尝试中,我创建了一个实例,例如 然后我的模样 我的问题是那是空的。知道有什么问题吗?另外,我可以绑定我的Injector实例而不是绑定类吗?这样,我可

  • 我们正在将ruby微服务迁移到kubernetes,我们过去在中保存特定于环境的配置。使用kubernetes,您可以为每个服务创建特定于环境的文件,例如等。 虽然kubernetes的pod配置文件能够保存环境变量,但您似乎不能在其中保存结构化数据。 例如,在中,我们有 在kubernetes中继续这种实践并在中打破环境是否合理,或者kubernetes是否有一些其他的最佳实践来为POD提供结构