У меня очень простое приложение, которое загружает массив JSON с использованием $ http.get внутри контроллера. Он присваивает данные результата областям, и HTML повторяет результаты, чтобы отобразить список. Это очень простой угловой пример.Как предварительно загрузить данные JSON, чтобы он был доступен, когда модуль Angularjs готов
function ViewListCtrl($scope, $http) {
$scope.shoppinglist = [];
$scope.loadList = function() {
var httpRequest = $http({
method: 'POST',
url: 'viewList_service.asp',
data: ''
}).success(function (data, status) {
$scope.shoppinglist = data;
});
};
$scope.loadList();
}
При тестировании на медленном сервере я понял, что задержка блокировки 3 секунды раздирает область повтора. Отладка показала мне, что мой контроллер не пытается получить данные до загрузки страницы. Моя страница занимает 3 секунды для загрузки. Затем я должен подождать еще 3 секунды для загрузки данных json.
Я хочу как можно скорее загрузить данные, поэтому он готов, когда мой контроллер готов. Проще говоря, я хочу предварительно загрузить данные, чтобы он загружался параллельно моему модулю.
Я искал все, и ближайшая вещь, которую я нашел, была «разрешена», но я не использую маршруты. Это очень простой список и никаких маршрутов или шаблонов.
Как загрузить JSON, как только страница начнет визуализироваться, так что она готова, когда контроллер готов и нет блокировки ... и затем получить эти данные в область видимости?
Вы уверены, что ваша функция вызывается после события onload()? Если это так, вы можете вызвать его перед самой загрузкой(), тем самым сохраняя эти 3 секунды. Вы можете взглянуть на [этот вопрос.] (Http://stackoverflow.com/questions/6944037/how-to-run-java-script-code-before-page-load) – Sangram