我需要在配置方法中使用$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