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 不够快?的主要内容,如果未能解决你的问题,请参考以下文章