我想在页面加载时从服务获取搜索结果。要更新 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/