主要问题-可能吗?我没有运气就尝试了..
主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
有任何想法吗?
谢谢!
Angular框架有两个阶段的初始化过程:
在此config阶段,将初始化所有提供程序,并config执行所有部分。这些config部分可能包含配置提供程序对象的代码,因此可以将它们与提供程序对象一起注入。但是,由于提供者是服务对象的工厂,并且在此阶段,提供者尚未完全初始化/配置-> **您不能在此阶段要求提供者为您创建服务-
config
在配置阶段您不能使用/注入服务**。此阶段完成后,所有提供程序都准备就绪(配置阶段完成后,无法再进行任何提供程序配置)。
在run阶段期间,run将执行所有部分。在此阶段 ,提供者已准备就绪,可以创建服务- >在此run阶段,您可以使用/注入服务。
run
$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; }; });
//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阶段执行的函数中,因此会出现错误:
该错误实际上是在说$httpProvider用于创建$http服务的尚未准备就绪(因为我们仍处于config阶段中)。
$httpProvider
//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阶段中执行,因此该代码将起作用。