AngularJS$scope更新,而不是视图
AngularJS $scope Updated, Not The View
我看过很多帖子,但还没有找到一个与我正在寻找的内容完全匹配的帖子。我拆分为多个控制器,以将功能清楚地划分为多个区域。有一个集中式服务,其中包含在各个控制器之间传递并显示在不同区域的屏幕上的所有数据。我遇到了一个控制器的问题,该控制器正在获取与其他控制器相同的数据,但是在操作服务中的数据时UI不会更新。在每个控制器中,我为服务中的对象设置了一个范围变量。
$scope.package = SampleService.getPackage();
然后,我使用 ng-repeat 遍历包,包包含一个数组,并且可以包含要显示的嵌套数据数组。在此过程中,数据被处理并分配给这些项目(在服务内,而不是控制器内(。如果我将 $scope.package 变量放在循环中,我可以看到该变量正在从服务中更新(在控制台中观看它(,但更改不会反映在屏幕上。特别是,我设置了几个值真/假,根据它们的值,屏幕上会显示几个图标。图标永远不会显示(没有检测到范围变量没有改变(,直到我单击屏幕上的某些内容(假设这会触发摘要循环(。然后图标将显示。但是,它们会根据任务的状态多次更改。我必须继续单击才能更改图标。
我错过了什么吗?对结构的更改在页面的另一个区域中完美运行。这是我无法正常工作的领域。唯一的区别是我切换真/假,而不是操纵对象的其他区域。使用 angular.copy 设置真/假值会有所帮助吗?
我有点不知所措,从这里开始做什么..
建议?
会有更好的答案,但要尝试的一件事是将您的服务执行包装在强制摘要的$timeout中。
$timeout(function() {
$scope.package = SampleService.getPackage();
});
听起来答案是触发$digest
循环:http://www.sitepoint.com/understanding-angulars-apply-digest/
这将在控制器中生成以下代码:
$scope.$apply(function () {
$scope.package = SampleService.getPackage();
});
- setInterval函数不会更改视图中的$scope
- Angular $scope更新、导航和 $scope.$apply() 后不绑定到视图
- 角度:当输入更改时更新视图 + .this/$scope
- 是否有任何事件“;在$scope摘要完成时”;或“;在视图刷新时”;在Angular.js中
- 控制器内部的scope函数不根据视图中的ng模型更新值
- AngularJS:如何在设置了$scope.var之后才在视图中设置$scope.var
- Angular js,$scope的更改没有反映在视图中
- 当$scope模型发生变化时,角度视图不会发生变化
- AngularJS$scope更改不更新视图
- AngularJS:当$scope中的值更改时,视图不会更新
- 尝试将数据数组设置为从视图调用函数后$scope
- AngularJS$scope更新,而不是视图
- 在 Angular.js 中更改视图时处理$scope状态和值的正确方法是什么?
- 控制器中的$scope在视图中不可访问/数据绑定不工作(IONIC/ANGULAR)
- 更新$scope-dons'不要影响视图
- $scope在视图中更新,而不在angularJs的控制器中
- 如何在AngularJS中的视图之间移动$routeProvider时阻止$destroy-of-scope
- AngularJS视图没有't在将$http响应分配给$scope时进行更新
- 尝试从AngularJS中的控制器($scope)将元素插入到视图(HTML)中
- 为什么在这种特殊情况下视图没有更新?($scope.$apply)