当控制器加载时,AngularJs $ scope变量的初始化时间较晚

时间:2015-10-05 11:52:51

标签: javascript ios angularjs cordova

我正在使用AngularJs开发HTML5移动应用。 Windows手机和Android的性能都不错,但在iOS上,它会在某些设备上产生性能问题。

问题是当我们从一个视图切换到另一个视图时,控制器没有按时加载,因此$ scope变量未初始化。我在视图中使用这些变量进行绑定,因此应该隐藏的元素是可见的。

这种情况发生在元素上,这取决于控制器内部的模型和操作。它正在创造性能问题。

被修改 重要的是:这不是第一次加载视图时发生的。当我回到其他视图并返回时,它开始发生(即没有被控制器操纵。没有变量被初始化)

2 个答案:

答案 0 :(得分:0)

这是一个普遍的问题。但是你可以做两件事。

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

  2. 将范围变量包装在超时中以确保渲染dom。

答案 1 :(得分: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更新问题。