AngularJS/Cordova/Phonegap Ipad 3 和 Iphone 4s 不够快?
Posted
技术标签:
【中文标题】AngularJS/Cordova/Phonegap Ipad 3 和 Iphone 4s 不够快?【英文标题】:AngularJS/Cordova/Phonegap Ipad 3 and Iphone 4s not fast enough? 【发布时间】:2014-07-20 19:43:50 【问题描述】:我拥有一个 AngularJS 应用程序(角度 v1.2.19),我使用 Cordova/PhoneGap 将它转换为 ios 应用程序。
但是,似乎 resolve
属性(见下文)正在考虑但相关页面在承诺解决之前显示,导致一些难看的闪烁。
在这种情况下闪烁的是:表单只显示字段集和图例+按钮1秒钟,然后显示整个数据(输入等)。
$routeProvider
.when('/page/meetings/123/edit',
templateUrl: "edit.html",
controller: "EditCtrl"
resolve:
activities: ['Activities', function (Activities)
return Activities.getList().then(function(response)
return response.data;
);
]
)
//page is displayed before activities are fully loaded.
Cordova 是否存在关于 resolve
属性的已知错误?还是我应该添加的配置?
它在浏览器中运行良好,但在 iOS 应用程序中,我无法让 Angular 在页面呈现之前解析承诺。
我不明白为什么这只发生在 iOS 应用程序而不是网络浏览器上。
当我删除 resolve
部分时,页面显示时不会闪烁,尽管我没有填充活动。
也许只是性能原因?确实,我在我的 Ipad 3(名为“新 Ipad”)中从一个内容不多的页面测试了路径 /page/meetings/123/edit
,并且它显示了承诺解决后的页面 => 很好。
奇怪的是,当我把同一个链接放在一个沉重的页面上..列出几个项目时,目标页面(编辑页面)仍然闪烁,大约1秒钟没有显示任何表单,然后显示整个。
更奇怪的是,无论/page/meetings/123/edit
链接在哪里(重页或轻页),Iphone 4s 上完全相同的代码都会出现闪烁。
相反,iPhone 4s 和 Ipad 上的网页移动版(Safari)是完美的。真的不知道为什么。
【问题讨论】:
【参考方案1】:经过几个小时的搜索,我找到了原因。
在编辑页面的控制器中,我最初是这样做的:
$anchorScroll(); //scrolling to the top
好像和元素的显示有冲突。 这就解释了为什么当我来自需要滚动的页面(例如列表页面中的 20 个项目)时,会出现冲突。
所以我选择的解决方案是这样做,以便以最少的时间延迟滚动:
$timeout(
function()
$anchorScroll();
,
0);
现在整体可以很好地与 iOS 应用的 PhoneGap/Cordova 配合使用。
【讨论】:
以上是关于AngularJS/Cordova/Phonegap Ipad 3 和 Iphone 4s 不够快?的主要内容,如果未能解决你的问题,请参考以下文章