我一直在使用AngularJs和Restangular与PHP后端。 我正在调用一个基于route(detail / list)的函数来从Restangular中获取变量。
问题是如果数据库连接有延迟,页面显示为空白,并在数秒(2-3)秒后填充并显示数据,
导航到详细信息并返回列表页面时会重复此问题。
答案 0 :(得分:3)
以下是在呈现页面之前如何解析数据的示例(无空白屏幕):
在渲染视图之前调用'resolve'函数。
$routeProvider.when('/admin/task/:id' , {
templateUrl: '/app/task/admin-task-results.tpl.html',
controller:'AdminTaskDetailsCtrl',
resolve: {
task: function($route, Restangular) {
return Restangular.one('tasks', $route.current.params.id).get();
}
}
});
只需将已解析的对象(本例中的任务)作为参数传递给控制器:
module.controller('AdminTaskDetailsCtrl', function ($scope, task) { ... });
但是,我要指出,这种方法并不总是最佳解决方案,因为用户在更改路线后无法获得即时反馈。考虑在控制器中加载数据并显示微调器,直到数据到达。
答案 1 :(得分:0)
我假设你仍然需要等待加载数据,所以要在没有数据和加载日期的情况下绘制视图,以后可以在控制器构造函数中使用next:
$scope.$on('$viewContentLoaded', function(){
// Load data into model here
});