Angular中未知的$http提供商

Unknown $http Provider in Angular

本文关键字:http 提供商 未知 Angular      更新时间:2023-09-26

我需要在配置方法中使用$http服务。但是我不能在配置中使用$http,我得到unknown Provider错误信息。

我的代码:
.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不是一个好的做法。您可以在.run中使用它,也可以在.service.factory中使用该服务。

如果只需要AJAX请求,你可以从新的注入器中获取$http server:

.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,
    }
})

我们不能在配置中使用http。欲了解更多详情,请点击此链接:

只能在.config文件中注入提供商。但是$http不是提供商,你的angular应用正在搜索名为$http的提供商,但是它找不到它,所以它抛出了错误。

如何解决这个问题?

如果你想在angular控制器加载前调用ajax,你可以在。run

中调用。

你能控制sampleslist.js吗?如果是,也许只是下载它使用标签和赋值给变量。

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

然后你可以使用angular.constant或者直接使用变量samplelist将这些值注入angular