[英]AngularJS injecting service into a controller
我正在獲得未知提供者
Error: [$injector:unpr] http://errors.angularjs.org/1.4.8/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope%20%3C-%20RfcDataService
與下面的代碼。 有人可以指導我這里怎么了嗎?
var RFC = angular.module('rfcApp', []); RFC.service('RfcDataService', function($scope, $http) { this.getUserData = function($http) { $http.get("http://myserver:8080/UserPrefs?jid=fcc").then(function(response) { return response.data; }); }; this.getHomeData = function($scope) { angular.forEach($scope.rfcData, function(singleItem) { if (singleItem.dataFor === 'Home') { $scope.homeTabs = (singleItem.tabs); } }); }; } RFC.controller('RfcMainController', ['$scope', '$http', '$sce', 'RfcDataService', function($scope, $http, $sce, RfcDataService) { $scope.rfcData = RfcDataService.getUserData($http); RfcDataService.getHomeData($scope); }
第一:
從您的getUserData
函數中刪除$http
它已經在作用域中,並且您的服務函數也無法注入。
如果您使用查詢字符串參數調用$http
,則將其作為第二個參數傳遞
您的getUserData
函數應返回一個promise:
this.getUserData = function() {
return $http.get("http://myserver:8080/UserPrefs", {jid:'fcc'}).then(function(response) {
return response.data;
});
};
您可以這樣簡化:
this.getUserData = function() {
return $http.get("http://myserver:8080/UserPrefs", {jid:'fcc'});
};
然后使用如下結果:
RfcDataService.getUserData().success(function(result) {
$scope.rfcData = result;
});
您正在嘗試將$scope
注入服務。 您不能這樣做,因此會出現錯誤。 正確的服務代碼:
var RFC = angular.module('rfcApp', []);
RFC.service('RfcDataService', function($http) {
this.getUserData = function() {
$http.get("http://myserver:8080/UserPrefs?jid=fcc").then(function(response) {
return response.data;
});
};
});
RFC.controller('RfcMainController', ['$scope', '$http', '$sce', 'RfcDataService', function($scope, $http, $sce, RfcDataService) {
$scope.rfcData = RfcDataService.getUserData($http).then(function() {
angular.forEach(data, function(singleItem) {
if (singleItem.dataFor === 'Home') {
$scope.homeTabs = singleItem.tabs;
}
});
});
}]);
注意,如何使用getUserData
方法返回的getUserData
對象 。 您也不需要getUserData
方法中的$http
參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.