Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态更改过滤器时更新ng repeat-AngularJS_Angularjs_Angularjs Ng Repeat - Fatal编程技术网

动态更改过滤器时更新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秒的时间来更新。