私の問題
Angular を使用して Phonegap アプリケーションを作成しています。私のページのほとんどはかなり小さく、遷移/応答性は迅速かつスムーズです. ただし、問題が発生しているかなり大きなページが 1 つあります。
このページに変更する方法は簡単です。
<button ng-click="$location.url('/page2')"></button>
上のボタンを「タップ」すると、応答してページを変更するのに約 1 ~ 2 秒かかります。このページの改善点をすべて再確認したところ、ページを変更する前に Angular がこのページの DOM をコンパイルおよび解析したために遅延が発生したことが判明しました。これは実際のデバイスでテストしているため、エミュレータの速度によるものではないことに注意してください。
質問
自動または手動でページの変更を傍受し、それらを一種の「読み込み中」ページに配置して、ボタンのクリックへの応答が即座に行われ、ページの変更が表示されるようにする方法はありますか?」読み込んでいます」ページ。
その唯一の問題は、何かをクリックして何も起こらないのは非常に厄介です。この問題に関するリソースを見つけるのに非常に苦労しているので、誰かが私を正しい方向に向けることさえできれば、私は感謝しています.
編集:
私が見つけた非常にハックな解決策は、ラッパーページで 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>