如何在第一次运行时更新回调视图

时间:2014-04-23 12:04:44

标签: javascript angularjs callback

我想在页面加载时从服务中获取搜索结果。要更新视图,我只需要从回调中调用$apply一次以避免Error: [$rootScope:inprog]。我尝试了ng-init,但似乎它没有调用摘要循环。有没有更好的方法呢?处理回调的方法是什么?

代码:

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

1 个答案:

答案 0 :(得分:0)

只是建议而不是使用$scope.$apply()尝试并使用$scope.$apply(function(){ 'digest loop' });这是更合适的做法。