2014-04-23 57 views
1

我想在頁面加載時從服務中獲取搜索結果。要更新視圖,我只需要從回調中調用$apply一次以避免Error: [$rootScope:inprog]。我嘗試了ng-init,但似乎沒有調用digest循環。有沒有更好的方法來做到這一點?處理回調的方法是什麼?如何在第一次運行時更新回調視圖

代碼:

<input autocomplete="off" autocorrect="off" ng-keyup="search()" ng-model="query" spellcheck="false" type="text"> 

和js

.controller('HomeCtrl', function ($scope, Contacts) { 
    $scope.hits = []; 
    $scope.query = ''; 
    $scope.initRun = true; 
    $scope.search = function() { 
     Contacts.search($scope.query, function(success, content) { 
     if (!success || $scope.query != content.query) { 
      return; 
     } 
     $scope.hits = content.hits; 
     if ($scope.initRun){ 
      $scope.$apply(); 
      $scope.initRun = false; 
     } 
     }); 
    }; 
    $scope.search(); 
}); 

現場演示http://lukasz-madon.github.io/algolia-angular-example/#/

回答

0

只是一個建議,而不是使用$scope.$apply()嘗試使用$scope.$apply(function(){ 'digest loop' });這是做的更合適的方式。

+0

有什麼區別? –

+0

$ scope。如果未定義範圍中的變量,$ apply()可能會引發異常,所以angular引發錯誤。 – Venkat

相關問題