AngularJs $范围内的变量是后期当控制器负载
我使用AngularJs HTML5的移动应用程序初始化工作。在Windows Phone和Android上表现还是不错的,但在iOS上它会在某些设备上造成性能问题。
的问题是,当我们从一个视图切换到另一个,控制器不及时,因此$范围变量不会被初始化加载。我在视图中使用这些变量进行绑定,所以应该隐藏的元素是可见的。
这与它们是依赖于模型和操作内部控制器单元发生。它正在创造性能问题。
编辑 Imp事件:这不是首次发生视图加载。当我回到另一种观点回来,它开始发生(由控制器即无操作。没有变量被初始化)
这是一个有点普遍质疑。但主要有两件事你可以做。
解析路由中的数据以确保数据在控制器运行前可用。
裹在超时变量的作用域,以确保DOM渲染。
dom已经被渲染,但没有任何东西在控制器内部被操纵。视图是可见的,因为它没有任何操作。 说$ scope.ddlShow是一个用于显示下拉列表的变量。下拉列表是可见的,$ scope.ddlShow甚至没有初始化。 Imp事件:第一次加载视图时不会发生这种情况。当我回到其他观点并回来时,它开始发生 –
假设你正在使用
<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更新问题。
你能分享一些代码? – MegaAppBear
可以使用路由'resolve'来预加载数据。需要更多细节 – charlietfl
那么这里没有警告,但是当我在$ scope.init()函数的末尾应用警报时,警报会一个接一个地出现10次。同样,当我在上面的Q中编辑时,第一次加载视图时不会发生。它发生在那之后。 –