Angularjs 在PhoneGap上,ngView多次更改同一页面,生成$digest错误

Angularjs 在PhoneGap上,ngView多次更改同一页面,生成$digest错误,angularjs,cordova,phonegap-build,ngroute,ng-view,Angularjs,Cordova,Phonegap Build,Ngroute,Ng View,我正在尝试使用Cordova PhoneGap将web应用程序移植到手机。除了ngView指令外,它的工作原理与预期大致相同 [老问题] 当我更改页面时,新页面覆盖在旧页面上,混合了它们的元素。在deviceReady事件之后,我通过Angular异步引导解决了这个问题 [未解决的问题] 我可以在Xcode上看到运行时内存的巨大使用。在主页上,我看到大约90MB的使用量。如果我转到用户页面(更重),内存消耗大约为200MB。如果我回到主页,内存会增加,而不是回到90MB。 我注意到,当我打开一个

我正在尝试使用Cordova PhoneGap将web应用程序移植到手机。除了
ngView
指令外,它的工作原理与预期大致相同

[老问题]

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

[未解决的问题]

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

我没有挂起的
setTimeout
setInterval
。 我猜当一个作用域被破坏时,它的控制器也会被破坏

以下是我使用ngview的方式:

index.html

<body ng-cloak class="ng-cloak" style="overflow-y: auto;">
     <div ng-view></div>
    ...
</body>
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>
它在浏览器上运行良好,我不明白为什么我不能在应用程序中顺利更改页面


谢谢

这里没有足够的代码来帮助诊断问题。如果看不到标记和路由服务是如何声明的,就不可能知道这是声明的问题还是routeProvider的问题,但是routeProvider被破坏是非常值得怀疑的。我添加了一些代码,但这是非常标准的。我真的不知道如何帮助你来帮助我。你没有为那些视图设置任何控制器,对吗?您应该为每个“when”语句以及每个“templateUrl”分配一个控制器。无法查看您在何处/如何加载控制器。我在每个模板中设置了控制器。我要更新代码我已经更新了我的问题,还有一些新闻。谢谢这里没有足够的代码来帮助诊断问题。如果看不到标记和路由服务是如何声明的,就不可能知道这是声明的问题还是routeProvider的问题,但是routeProvider被破坏是非常值得怀疑的。我添加了一些代码,但这是非常标准的。我真的不知道如何帮助你来帮助我。你没有为那些视图设置任何控制器,对吗?您应该为每个“when”语句以及每个“templateUrl”分配一个控制器。无法查看您在何处/如何加载控制器。我在每个模板中设置了控制器。我要更新代码我已经更新了我的问题,还有一些新闻。非常感谢。
<div id='home_page' ng-controller="homePageController as ctrl"
     ng-style="{'background-image':'url('+{{ctrl.image}}+')'}">

        <div>
            this is the home page
        </div>   
</div>
.controller('homePageController', [function($scope)
{
 self.image="/img/img.png";
 console.log('PAGE OPENED!!');

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