首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当控制器加载时,AngularJs $scope变量初始化的时间较晚。

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

Stack Overflow用户
提问于 2015-10-05 11:52:50
回答 2查看 558关注 0票数 0

我正在使用AngularJs开发一个HTML5移动应用程序。windows、手机和安卓的性能都很好,但在iOS上,它在某些设备上产生了性能问题。

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

这种情况发生在依赖于控制器内部模型和操作的元素上。它正在产生性能问题。

编辑的导入程序:这不是第一次加载视图时发生的情况。当我回到另一个视图并返回时,它就开始发生了(即,控制器不进行操作)。没有变量被初始化)

EN

回答 2

Stack Overflow用户

发布于 2015-10-05 12:20:21

这是一个一般性的问题。但主要有两件事你可以做。

  1. 解析路由中的数据,以确保在控制器运行之前数据是可用的。
  2. 将作用域变量包装在超时中,以确保呈现dom。
票数 0
EN

Stack Overflow用户

发布于 2015-10-05 12:21:53

假设您正在使用

代码语言:javascript
复制
<div ng-show="isSomeFlag"></div>
<div ng-hide="isSomeFlag"></div>

在您的控制器内,您正在使用

代码语言:javascript
复制
$scope.isSomeFlag= true;

增加以下内容:

代码语言:javascript
复制
<div ng-show="isLoading && isSomeFlag"></div>
<div ng-hide="isLoading && isSomeFlag"></div>

在最后一行的控制器中,将isLoading标志设置为true。

代码语言:javascript
复制
$scope.isSomeFlag = true;
...
$scope.isLoading = true; // controller ends here (below)

这样,元素就会像预期的那样运行。然而,有许多其他的方式,例如,解决等,但这应该解决您的UI更新问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32947991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档