在PhoneGap上使用Angular,ngView会多次更改同一页面,从而产生$ digest错误

时间:2015-10-19 21:09:25

标签: angularjs cordova phonegap-build ngroute ng-view

我正在尝试使用Cordova PhoneGap将网络应用移植到移动设备上。除了ngView指令外,它或多或少地按预期工作。

[老问题]

当我更改页面时,新页面覆盖旧页面,混合其元素。我在deviceReady事件之后使用Angular的异步引导解决了这个问题。

[未解决的问题]

我可以在Xcode上看到在运行时也大量使用内存。在主页,我看到大约90MB的使用。如果我转到用户页面(更重),内存消耗约为200MB。如果我回到主页,内存会增加而不是回到90MB。 我注意到当我打开一个新页面时,它的控制器被多次初始化,产生$digest循环错误。事实上,当我进入主页时,日志会写' PAGE OPENED !!' 10次

我没有等待setTimeoutsetInterval。 我想当一个范围被破坏时,它的控制器也会这样做。

这就是我使用ngview的方式:

的index.html

<body ng-cloak class="ng-cloak" style="overflow-y: auto;">
     <div ng-view></div>
    ...
</body>

app.modules.js

angular.module('myApp', [...])

  .config(function($routeProvider){
      $routeProvider   
           .when('/home',{
                  templateUrl: 'app/home.html',
                })      
           .when('/user',{
                  templateUrl: 'app/user/profile.html',
                });                                                         
})

home.html的

<div id='home_page' ng-controller="homePageController as ctrl"
     ng-style="{'background-image':'url('+{{ctrl.image}}+')'}">

        <div>
            this is the home page
        </div>   
</div>

homePageController.js

.controller('homePageController', [function($scope)
{
 self.image="/img/img.png";
 console.log('PAGE OPENED!!');

 this.pageClosed = function()
    { $scope.$destroy(); }
}]);

它在浏览器上运行良好,我无法理解为什么我无法顺利更改应用中的网页。

谢谢

0 个答案:

没有答案