Javascript Angular中未知的$http提供程序

Javascript Angular中未知的$http提供程序,javascript,angularjs,angularjs-directive,angular-routing,Javascript,Angularjs,Angularjs Directive,Angular Routing,我需要在config方法中使用$http服务。但我无法在配置中使用$http,我收到未知提供程序错误消息 我的代码: .config(function($http, $routeProvider, $provide) { $http.get("sampleslist.js").success(function(data) { var loop = 0, currentRoute; for (loop = 0; loop < data[loop].p

我需要在config方法中使用
$http
服务。但我无法在配置中使用
$http
,我收到
未知提供程序
错误消息

我的代码:

.config(function($http, $routeProvider, $provide) {
    $http.get("sampleslist.js").success(function(data) {
        var loop = 0, currentRoute;

        for (loop = 0; loop < data[loop].pages.length; loop++) {
            currentRoute = data[loop].pages;

            var routeName = "/" + currentRoute[loop].name;
            $routeProvider.when(routeName, {
                templateUrl:"/" + currentRoute.name + ".html",
            })
        }
    })

    app = {controller: $controllerProvider.register}
})
.config(函数($http、$routeProvider、$provide){
$http.get(“sampleslist.js”).success(函数(数据){
var loop=0,currentRoute;
for(loop=0;loop

您能提供解决方案吗?

如果只需要发出AJAX请求,您可以从新的注入器中实际检索$http服务器:

.config(function($routeProvider, $provide) {
    var $http = angular.injector(['ng']).get('$http');
    $http.get("sampleslist.js").success(

        function(data) {

            var loop = 0,
                currentRoute;

            for (loop = 0; loop < data[loop].pages.length; loop++) {

                currentRoute = data[loop].pages;

                var routeName = "/" + currentRoute[loop].name;

                $routeProvider.when(routeName, {

                    templateUrl: "/" + currentRoute.name + ".html",

                })
            }
        })

    app = {
        controller: $controllerProvider.register,
    }
})
.config(函数($routeProvider,$provide){
var$http=angular.injector(['ng']).get('$http');
$http.get(“sampleslist.js”).success(
功能(数据){
var循环=0,
当前路线;
for(loop=0;loop
我们不能在配置中使用http。有关更多详细信息,请查看此链接:


您只能在.config文件中插入提供程序。但$http不是提供程序,您的angular应用程序正在搜索名为$http的提供程序,但无法找到它,因此引发了错误

如何解决这个问题


如果在加载angular controller之前需要任何ajax调用,可以在.run中进行调用,在
.config
中使用
$http
不是一个好的做法。您可以在
.run
中使用它,也可以使用
.service
.factory
使用该服务。您是否可以控制
sampleslist.js
?如果是,可以使用标签下载它,并为变量赋值

//sampleslist.js
var samplelist = {...}

//index.html
<script src="samplelist.js"></script>
//sampleslist.js
var samplelist={…}
//index.html

然后,您可以使用
angular.constant
或仅使用变量
samplelist

将此值注入angular。正如您所说,在配置阶段不能使用$http。不过,您可以在运行阶段使用它。可能是$routeProvider的副本。当(routeName,{})这个函数不起作用时,为什么?我甚至不建议OP绕过Angular设置的(有意)限制;即使如此,
success
也是一种不推荐使用的方法,不应使用。以这种方式访问
$http
似乎很危险……据我所知/读到的,这就是角度工作的流程。上面我想说的是,您可以在加载控制器之前运行一些东西。我应该提到数据而不是页面加载。app.config()app.run()指令的编译函数(如果在dom中找到它们)app.controller()指令的链接函数(如果找到它们,同样如此)与实践无关。我们无法在.config中插入$http。