动态更改过滤器时更新ng repeat-AngularJS
我从服务器获取数据,然后根据数据更改动态更改过滤器时更新ng repeat-AngularJS,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,我从服务器获取数据,然后根据数据更改ng repeat的过滤器。更改过滤器后,我尝试滚动到更新ng repeat过滤器后可见的新元素 问题在于 我可以动态更改过滤器,但angular检测到更改并更新ng repeat大约需要5秒钟。我的滚动代码在ng repeat过滤器更改后立即运行,因为它没有被更新,我收到一个错误消息,说 元素不存在 我的问题是 如何在过滤器更改后立即更新ng repeat,然后在ng repeat完成过滤后调用我的滚动 这是我目前的代码 //Set ng-repeat fi
ng repeat
的过滤器。更改过滤器后,我尝试滚动到更新ng repeat
过滤器后可见的新元素
问题在于
我可以动态更改过滤器,但angular检测到更改并更新ng repeat
大约需要5秒钟。我的滚动代码在ng repeat
过滤器更改后立即运行,因为它没有被更新,我收到一个错误消息,说
元素不存在
我的问题是
如何在过滤器更改后立即更新ng repeat
,然后在ng repeat
完成过滤后调用我的滚动
这是我目前的代码
//Set ng-repeat filter
orderTypeFilter = 0;
//Scroll to element that will be visible after ng-repeat finishes updating
var topPos = document.getElementById('cardOrder0').offsetTop;
document.getElementById('main-md-content').scrollTop = topPos - 10;
您必须使用,即,
$scope.$apply(函数(){orderTypeFilter=0;})
将$timeout
注入到您试图滚动顶端的位置,并将其放入$timeout(function(){var topPos=document.getElementById….})
我应该补充一点,我是使用$mdDialog
控制器执行此操作的,因此$scope.apply
不起作用@AlonEitan用户不需要等待5秒钟才能更改ng repeat
?有没有办法强迫更改而不是等待它检测到它?@GaryJohnson在$timeout
内时没有,因为它会触发摘要循环,更新视图,然后才尝试scroll@AlonEitan添加$timeout
有效,但是ng repeat
仍然需要大约5秒的时间来更新
将$timeout
注入到您试图滚动顶端的位置,并将其放入$timeout(function(){var topPos=document.getElementById….})
我应该补充一点,我是使用$mdDialog
控制器执行此操作的,因此$scope.apply
不起作用@AlonEitan用户不需要等待5秒钟才能更改ng repeat
?有没有办法强迫更改而不是等待它检测到它?@GaryJohnson在$timeout
内时没有,因为它会触发摘要循环,更新视图,然后才尝试scroll@AlonEitan添加$timeout
可以工作,但是ng repeat
仍然需要大约5秒的时间来更新。