2015-10-05 73 views
0

我使用AngularJs HTML5的移动应用程序初始化工作。在Windows Phone和Android上表现还是不错的,但在iOS上它会在某些设备上造成性能问题。

的问题是,当我们从一个视图切换到另一个,控制器不及时,因此$范围变量不会被初始化加载。我在视图中使用这些变量进行绑定,所以应该隐藏的元素是可见的。

这与它们是依赖于模型和操作内部控制器单元发生。它正在创造性能问题。

编辑 Imp事件:这不是首次发生视图加载。当我回到另一种观点回来,它开始发生(由控制器即无操作。没有变量被初始化)

+0

你能分享一些代码? – MegaAppBear

+0

可以使用路由'resolve'来预加载数据。需要更多细节 – charlietfl

+0

那么这里没有警告,但是当我在$ scope.init()函数的末尾应用警报时,警报会一个接一个地出现10次。同样,当我在上面的Q中编辑时,第一次加载视图时不会发生。它发生在那之后。 –

回答

0

这是一个有点普遍质疑。但主要有两件事你可以做。

  1. 解析路由中的数据以确保数据在控制器运行前可用。

  2. 裹在超时变量的作用域,以确保DOM渲染。

+0

dom已经被渲染,但没有任何东西在控制器内部被操纵。视图是可见的,因为它没有任何操作。 说$ scope.ddlShow是一个用于显示下拉列表的变量。下拉列表是可见的,$ scope.ddlShow甚至没有初始化。 Imp事件:第一次加载视图时不会发生这种情况。当我回到其他观点并回来时,它开始发生 –

0

假设你正在使用

<div ng-show="isSomeFlag"></div> 
<div ng-hide="isSomeFlag"></div> 

内部控制器,您使用的

$scope.isSomeFlag= true; 

添加以下内容:

<div ng-show="isLoading && isSomeFlag"></div> 
<div ng-hide="isLoading && isSomeFlag"></div> 

并在最后一个控制器行将isLoading标志设置为true。

$scope.isSomeFlag = true; 
... 
$scope.isLoading = true; // controller ends here (below) 

以这种方式,元素将按预期行事。然而,还有很多其他方式,例如解析等,但这应该解决您的UI更新问题。