2016-07-01 2 views
-1

У меня есть эта функция, которая извлекает данные из базы данных и обновляет значения области.AngularJS scope.apply вызывает ошибку

$scope.loadFromDB = function(){ 
       console.log("loadFromDB function"); 
       $http({ 
         url: '/getData', 
         method: "GET", 
        }) 
        .then(function(response) { 
          // success 
          var data = JSON.parse(response.data) 
          data = JSON.parse(data.data) 
          $scope.gridDataDayData = data.dayData; 
          $scope.gridDataKlasoveNames = data.klasoveNames; 
          $scope.gridDataNumOfRows = data.numOfRows; 
          $scope.$apply(); 
         }, 
         function(response) { // optional 
          // failed 
          console.log("get unsuccessful"); 
         }); 
      }; 

Когда я запускаю это, хотя я получаю

error: [$rootScope:inprog] http://errors.angularjs.org/1.4.3/$rootScope/inprog?p0=%24digest 

Я не могу понять, как это исправить. Пожалуйста, помогите мне.

Спасибо

+0

Что происходит без '$ объема $ применяется();. '? – Rayon

+0

Он не обновляет данные сетки – mp3por

+0

Попробуйте '$ объем $ применяется (функция() {$ scope.gridDataDayData = data.dayData;. $ scope.gridDataKlasoveNames = data.klasoveNames; $ scope.gridDataNumOfRows = data.numOfRows ; }); ' – Rayon

ответ

0

Вам не нужно спровоцировать переваривать цикл потому, что вы находитесь внутри углового жизненного цикла ... он уже запущен. Ручных нажатий необходимо, когда вы находитесь за пределы от углового пути: http://jimhoskins.com/2012/12/17/angularjs-and-apply.html

+0

, но он не обновляет UI – mp3por

+0

, если обновлений нет, ошибка находится в другом месте, но не здесь ... ваш скрипт немного запутан, например, вам не нужно анализировать как json, потому что это угловое для вас ... но правильно и должно работать. – Hitmands

0

Просто удалить

var data = JSON.parse(response.data)           
data = JSON.parse(data.data) and $scope.$apply() 

и

$scope.$apply();