这是我的控制器和服务代码。我正在使用AngularJS v1.6
app.controller('ServicesCtrl',['$scope','$http','DataService',function($scope,$http,DataService){
$scope.returnedData = DataService.GetData('services1.json');
}]);
app.controller('ContactCtrl',['$scope','$http','DataService',function($scope,$http,DataService){
$scope.returnedData = DataService.GetData('location.json');
// console.log($scope.returnedData);
}]);
app.service('DataService', ['$http', function($http){
var data;
this.GetData = function(path) {
$http.get(path).then(function(response){
//console.log(response.data);
data = response.data;
});
return data;
};
}]);
为什么我的数据在返回控制器功能时会被破坏。我得到$$hashkey
的意外属性,其中包含对象(12
)的值。我是初学者,所以请用简单的方式解释。我能够在DataService
内注销正确的数据,但它在控制器内部被破坏了。控制器的数据只是在视图中混合。即使我没有使用其中一个控制器,另一个也没有按预期工作。
答案 0 :(得分:0)
你需要像下面这样打电话:Promise将解决,它将在你的控制器中提供数据。结帐工作plunker
app.controller('ServicesCtrl', ['$scope', '$http', 'DataService', function($scope, $http, DataService) {
DataService.GetData('services1.json').then(function(response) {
$scope.returnedData = response.data;
});
}]);
app.controller('ContactCtrl', ['$scope', '$http', 'DataService', function($scope, $http, DataService) {
DataService.GetData('location.json').then(function(response) {
$scope.returnedData = response.data;
});
}]);
app.service('DataService', ['$http', function($http) {
var data;
this.GetData = function(path) {
return $http.get(path)
};
}]);