2016-03-21 21 views
0

Kapsamımı bu işlev içinden güncellerken sorun yaşıyorum updateRefresh(). İlk yineleme Bunu message == "test" görebilirsiniz ve o zaman kapsam içinde ne üzerine gelmez, ama ne benim HTML sayfasında, <span>{{refreshDomainStatus.message}}</span> tarihinde için bağlayıcıdır, hala message="test"Kapsam çağrısı http çağında güncellenmiyor

ben ama $scope.$apply() denedi nesneye bağlı Şu anda $digest'un devam ediyor olduğunu söylüyor.

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); 
      } 
     }); 
    } 

İlk Tekrar: First Iteration

İkinci Tekrar: After

+0

Eğer 'console.log (response.refreshDomainStatus) ise;' senin 'updateRefresh()' yöntemi içinde çıkış nedir? Ayrıca, açık bir soru, ama tüm döngüyü başlatmak için 'updateRefresh()' bir yerdesiniz, değil mi? – Lex

+0

Evet, tüm işlemi başlatmak için arıyorum. İlk yineleme: 'response.refreshDomainStatus => Nesne {error: false, message:" Kullanıcıların listesi alınıyor ", durduruldu: false}'. '$ scope.refreshDomainStatus => Nesne {error: true, message:" test ", durduruldu: false}. İkinci yinelemede $ scope.refreshDomainStatus ayarlandı. Uygun gibi görünüyor. Hala "test" yazan elemanın kapsamını incelediğimde: angular.element ($ 0) .scope(). RefreshDomainStatus => Nesne {message: "test", durduruldu: false, error: false} ' – Bluebaron

cevap

1

Eğer response.refreshDomainStatus için $scope.refreshDomainStatus set olmamalı: Second Iteration

bağlamı bitirme ve teftiş sonra mı?

$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

Evet. Haklısın. Üzgünüz, sorunun referans sorunu olup olmadığını görmeye çalışıyordum. Hala çalışmıyor. – Bluebaron

+0

Herhangi bir konsol hatasını kontrol ettiniz mi? $ http değeriniz çözülememiş olabilir – amcpanaligan

+0

İlk yineleme: http://imgur.com/HLVzmHA İkinci yineleme: http://imgur.com/mzxDewv Sonlandırıldıktan sonra (konsoldaki kapsamı denetleme): http://imgur.com/DCfQ4Bh – Bluebaron

0

Sorunum, denetleyicinin iki örneğini oluşturuyordum. Ben tekil çeşit istiyorum sanırım ama ileride başvurmak üzere, bu kötü:

 <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>