嘿傢伙,所以我只是試圖在我的應用程序啓動時加載數據。但是,視圖的加載速度比http請求快(當然)。一旦我的數據正確加載,我想刷新我的視圖,因爲這些數據定義了我的視圖。
我試過$ rootScope.apply從工廠,我做我的http請求裏面,我也試過直接與$老毛病又犯在我的控制器的http請求scope.apply,並沒有一個合作,他們倆給我「$摘要已在進行中」
任何想法如何設置我的代碼,使我的視圖刷新數據加載?我將有幾個不同的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();
}
]);
您可以創建一個的jsfiddle?我真的懷疑你的代碼是否工作。至少我可以看到一些語法錯誤。 'method:post,'將會破壞你的代碼,因爲'post'需要是一個字符串。謝謝。 – zsong
hey sza,post實際上是一個在文件中聲明的常量,它是如何工作的。我會盡力爭取一個jsFiddle。 –
你有沒有試過不打'$ apply'? '$ http'服務的'success'回調被Angular本身調用'$ apply'。 –