【问题标题】:When I update my model in ng repeat the directive ng-show does not change当我在 ng 中更新我的模型时,指令 ng-show 不会改变
【发布时间】:2013-07-27 21:45:02
【问题描述】:
我有一个页面可以动态更新我的模型
<div ng-repeat="action in actions">
<div ng-show="action.showMyDiv">Hello </div>
<div>
当我使用当前页面中的操作动态更新我的模型时
$scope.actions[id]['showMyDiv']= true,
div 不显示。
拜托,你能帮帮我吗?
提前致谢。
【问题讨论】:
标签:
angularjs
ng-repeat
ng-show
【解决方案1】:
如果你手动更新值,你可以把它包装在 $scope.$apply() 中:
$scope.$apply(function(){
$scope.actions[id]['showMyDiv']= true
})
编辑:
$scope.$apply 2 美分:
Angular 解决绑定的方法是在每次渲染时进行脏检查(如果您四处搜索,则有大量关于该过程的资源)。当您使用 Angular 默认方法(例如,ng-click)时,会设置一个标志来警告应用程序页面需要“刷新”,并且您会看到更改发生。
如果您手动更改任何内容,则需要警告应用程序需要刷新,您可以使用 $apply 执行此操作。
有关说明,请参阅this example。请注意,两个更改是“手动”进行的,在 2 秒和 4 秒,使用 window.timeout (您不应该使用它,而是使用 $timeout 服务),但只有在第二个更改传播到视图之后.