我正在创建一个包含一些服务的新模块。我注册了以下服务:
myModule.provider("surveySrv", ["$http", function ($http) {
var httpSrv = $http;
return {
$get: function () {
return {
getall: function () {
return httpSrv.get("/api/survey/all");
},
remove: function (survey) {
// ...
}
};
}
};
}]);
我收到错误由于以下原因导致无法实例化模块ilgServices: 未知提供商:$ http
无法弄清楚原因。 但是如果我用工厂方法注册它就可以了:
myModule.factory("surveySrv", ["$http", function ($http) {
return {
getall: function () {
return $http.get("/api/survey/all");
},
remove: function (survey) {
//return $http.get()
}
};
}])
我在GitHub上得到了这个解释:
您只能将内容注入提供程序的$ get属性。 $ get属性被注入到您的控制器/指令/服务中。提供者的主体主要用于配置块以改变提供者的行为。
但是有一个问题 - 如何“将内容注入$ get属性”?
答案 0 :(得分:1)
在配置阶段调用module#provider
时,只允许注入提供者。
您可以将服务注入$ get函数,如下所示:
myModule.provider("surveySrv", function () {
return {
$get: ["$http", function ($http) {
return {
getall: function () {
return $http.get("/api/survey/all");
},
remove: function (survey) {
// ...
}
};
}]
};
});