数据被覆盖或损坏。是什么原因?

时间:2017-03-03 18:21:02

标签: angularjs angularjs-scope angular-services

这是我的控制器和服务代码。我正在使用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内注销正确的数据,但它在控制器内部被破坏了。控制器的数据只是在视图中混合。即使我没有使用其中一个控制器,另一个也没有按预期工作。

1 个答案:

答案 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)
      };
    }]);