我只是想在我的应用程序启动时加载数据。但是,视图加载速度比 http 请求快(当然)。一旦我的数据被正确加载,我想刷新我的视图,因为该数据定义了我的视图。
我在工厂内部尝试了 $rootScope.apply,我在其中执行 http 请求,我还尝试使用 $scope.apply 再次在控制器中直接执行 http 请求,但都没有工作,因为他们都给了我“$digest已经在进行中”
知道如何设置我的代码以使我的视图在数据加载时刷新吗?我将有几个不同的 http 请求,我想知道如何正确设置它们!我真的很感激任何意见!
这是我正在使用的一些代码。
app.factory('HttpRequestFactory', function($http, $q) {
var HttpRequestFactory = {
async: function(url, params) {
var deferred = $q.defer();
$http({
url: url,
method: post,
params: params
})
.success(function(data, status, headers, config) {
deferred.resolve(data);
})
.error(function(data, status, headers, config) {
deferred.reject("An error occurred");
});
return deferred.promise;
}
};
return HttpRequestFactory;
});
工厂
function initializeAll(){
HttpRequestFactory.async('../api', {action: 'getall'}).then(function(data) {
//$rootScope.$apply(function () {
allData = data;
//});
angular.forEach(allData, function(value, index){
console.log('Voala!');
});
});
}
控制器调用工厂的函数 initializeAll()
app.controller("MainController", ["$scope", "$rootScope","MyFactory",
function($scope, $rootScope, MyFactory){
MyFactory.initializeAll();
}
]);