我的问题
我正在使用 Angular 创建一个 Phonegap 应用程序。我的大部分页面都相当小,并且转换/响应快速而流畅。但是,我有一页相当大,我遇到了问题。
切换到这个页面的方法很简单:
<button ng-click="$location.url('/page2')"></button>
当您“点击”上方的按钮时,大约需要 1-2 秒来响应和更改页面。我已经仔细检查了此页面上的所有改进区域,并确定延迟是由 Angular 在更改页面之前编译和解析此页面的 DOM 引起的。请注意,我是在真实设备上进行测试的,所以它不是由于模拟器速度。
问题
有没有办法自动或手动拦截页面更改并将它们放在一种“加载”页面中,以便立即响应按钮单击并且页面更改可见,但页面内容会在一两秒后加载到此“加载”页面。
它只是一个问题,因为单击某些东西并且没有任何反应是非常尴尬的。我很难找到关于这个问题的任何资源,所以如果有人能指出我正确的方向,我将不胜感激。
编辑:
我发现的一个超级 hacky 解决方案是在包装页面上使用 ng-include 并稍微延迟包含。
myBigPageWrapper.html:
<div ng-include="page"></div>
控制器:
$scope.page = '';
setTimeout(function() { $scope.page='/pages/myBigPage.html'; $scope.$apply(); }, 1000);
然后导航到您的包装页面: $location.url('/myBigPageWrapper')
这显然不理想......但我希望这有助于澄清我正在尝试做的事情。
Page2.html
这是导致页面变慢的部分,将其注释掉会使页面加载非常快。“auditPages”数组中有 13 个页面,每个页面包含大约 50 行 html,其中大部分包含表单输入元素。相当多的逻辑,但是一旦加载它就会运行得很好。我不会包含所有页面,因为它会超载。
<div class="page-contents">
<form name="auditPageForm">
<div ng-repeat="(pageKey, pageData) in auditPages " ng-show="currentAuditPage.name==pageData.name">
<audit-form page="pageData">
<ng-include src=" 'partials/audit/auditSections/'+pageData.name+'.html'" onload="isFormValid(pageKey)"></ng-include>
</audit-form>
</div>
</form>
</div>