javascript - 如何在第一次运行时更新回调 View

标签 javascript angularjs callback

我想在页面加载时从服务获取搜索结果。要更新 View ,我只需从回调中调用 $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/#/

最佳答案

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

关于javascript - 如何在第一次运行时更新回调 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23243721/

相关文章:

javascript - 检查表单是否已通过php中的ajax提交

javascript - 如何在 JavaScript 中添加对象数组中的所有数量字段

javascript - safari 浏览器 toLocaleString() 的替代方案

javascript - 将 SweetAlert2 与 Angular 一起使用时如何保持范围?

javascript - 在 ES2015 中使用枚举

javascript - 如何在 Angular js中使用模型的值作为其他模型的名称

javascript - 使用 Jasmine (无后端测试)单独手动调试 Angular Directive(指令)

javascript - JS 回调函数可以返回值吗?

javascript - 返回上一页时变量未定义

javascript - 渐进(或迭代)回调