2017-01-16 9 views
0

Я пытаюсь перезагрузить данные. Heres мой JSON:Обновить данные в Угловом

[ 
     { 
      "name": "AAAAAA", 
      "data": "False" 

     }, 

     { 
      "name": "BBBBBB", 
      "data": "45%" 
     }, 
     { 
      "name": "CCCCC", 
      "data": "12%" 
     } 
] 

Моя JavaScript:

app.service('service', function($http, $q) { 

    var deferred = $q.defer(); 

    $http.get('names.json').then(function(data) { 
    deferred.resolve(data); 
    }); 

    this.getNames = function() { 
    return deferred.promise; 
    } 
}); 

app.controller('FirstCtrl', function($scope, service, $http) { 
    var vm = this; 
    vm.reloadData = function() { 
    console.log("reloading"); 
    vm.loadData(); 
    }; 

    vm.loadData = function() { 
    var promise = service.getNames(); 
    promise.then(function(data) { 
     $scope.names = data.data; 
     console.log($scope.names); 
    }); 
    } 

    vm.loadData(); 
}); 

Мой HTML:

Мои данные должны перезагрузить после функции нажмите "vm.reloadData()", но ничего не происходит, мой данные не обновляются. Спасибо за ответы заранее.

ответ

1

Попробуйте это:

  1. меня удалить дополнительные обещание, как $ HTTP сам по себе вернуть обещание ..
  2. Добавлен резерв не для хранения данных запроса в кэш

    app.service('service', function($http, $q) { 
         this.getNames = function() { 
         return $http.get('names.json', { cache: false}); 
         } 
        }); 
    
        app.controller('FirstCtrl', function($scope, service) { 
         var vm = this; 
         vm.reloadData = function() { 
         console.log("reloading"); 
         vm.loadData(); 
         }; 
    
         vm.loadData = function() { 
         var promise = service.getNames(); 
         promise.then(function(data) { 
          $scope.names = data.data; 
          console.log($scope.names); 
         }); 
         } 
    
         vm.loadData(); 
        }); 
    
0

Согласно вашей реализации вы преследуете обещание в сервисе, которое уже разрешено.

Вы должны определить deferred в методах обслуживания getNames().

app.service('service', function ($http, $q) { 
    this.getNames = function() { 
     var deferred = $q.defer(); 
     $http.get('names.json').then(function (data) { 
      deferred.resolve(data); 
     }); 
     return deferred.promise; 
    } 
}); 
0

Изменить service код что-то вроде

this.getNames = function() { 
    return $http.get('names.json'); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^