2016-03-21 1 views
0

У меня возникли проблемы с обновлением моего объема изнутри этой функции updateRefresh(). Первая итерация я могу видеть, что message == "test", а затем он перезаписать, что в объеме, но то, что он является обязательным на моем HTML-странице, <span>{{refreshDomainStatus.message}}</span>, по-прежнему привязан к объекту, где message="test"Связывание области не обновляется в http-вызове

Я попытался $scope.$apply(), но это говорит, что $digest в настоящее время.

app.controller('AssessmentController', ['$scope', '$http', '$timeout', 'ConnectionService', function ($scope, $http, $timeout, connectionService) { 

    $scope.refreshDomainStatus = { 
     message: "test" 
    }; 

    var updateRefresh = function(updateKey) { 
     $http.get('/assessment/api/update-refresh-domain/' + updateKey).success(function(response) { 
      $scope.refreshDomainStatus = response.refreshDomainStatus; 

      if (!response.refreshDomainStatus.halted) { 
       $timeout(function() { updateRefresh(updateKey); }, 250); 
      } 
     }); 
    } 

Первая итерация: First Iteration

Второй Итерация: Second Iteration

После окончания проверки и контекст: After

+0

Если вы 'console.log (response.refreshDomainStatus)' внутри updateRefresh) '' метода (что выход? Кроме того, очевидный вопрос, но вы вызываете 'updateRefresh()' где-то, чтобы запустить весь цикл, не так ли? – Lex

+0

Да, я звоню, чтобы начать весь процесс. Первая итерация: 'response.refreshDomainStatus => Object {error: false, message:« Извлечение списка пользователей », halted: false}'. '$ scope.refreshDomainStatus => Object {error: true, message:" test ", halted: false}'. На второй итерации задан параметр $ scope.refreshDomainStatus. Кажется, что это правильно. Когда я проверяю область действия элемента, который все еще говорит '' test ': angular.element ($ 0) .scope(). RefreshDomainStatus => Object {message: "test", halted: false, error: false} ' – Bluebaron

ответ

1

Вы не должны устанавливать $scope.refreshDomainStatus в response.refreshDomainStatus?

$http.get('/assessment/api/update-refresh-domain/' + updateKey).success(function(response) { 
     $scope.refreshDomainStatus = response.refreshDomainStatus; 

     if (!response.refreshDomainStatus.halted) { 
      $timeout(function() { updateRefresh(updateKey); }, 250); 
     } 
    }); 
+0

Да. Ты прав. Извините, я пытался выяснить, была ли проблема проблемой справки. Все еще не работает. – Bluebaron

+0

Вы проверили ошибки консоли? ваш $ http может не быть разрешен. – amcpanaligan

+0

Первая итерация: http://imgur.com/HLVzmHA Вторая итерация: http://imgur.com/mzxDewv После завершения (проверка области в консоли): http://imgur.com/DCfQ4Bh – Bluebaron

0

Проблема была в том, что я создавал два экземпляра контроллера. Я предполагаю, что я хочу какой-то одноплодной, но в будущем, это плохо:

 <div class="row" ng-controller="AssessmentController"> 
      <div class="col"> 
       <button class="btn btn-default" ng-click="refresh()">Refresh</button> 
      </div> 

     </div> 
     <div ng-show="" class="row" ng-controller="AssessmentController"> 
      <div class="col"> 
       <span>{{refreshStatus.message}}</span>  
      </div> 
     </div>