首先是一个插件:http://embed.plnkr.co/C866y3LHCE7QfBGuFQPQ/preview
所以我在这里通过Ajax获取一组帖子并使用ngRepeat显示它们。然后(当帖子完成渲染时)我想将页面滚动到特定的帖子(让我们说帖子№18)。看起来很简单,但我无法让它发挥作用。
问题似乎是,在从Ajax接收数据后,angular无法找到该帖子,因此position()
和scrollTop()
函数无法正常工作。
答案 0 :(得分:1)
您必须等到使用新模型更新视图后,使用$timeout
等待0毫秒在DOM准备好后立即滚动
$scope.getPosts = function() {
$http.get(data_url).success(function(data){
$scope.posts = data;
$timeout(function() {
var post = $('#pid_18');
console.log('pid_18', post);
$('body').scrollTop(post[0].offsetTop);
}, 0);
});
答案 1 :(得分:1)
我认为问题在于渲染没有完成,如果你有2个元素它可以工作但不能用1000.
所以最好的方法是知道渲染完成的时间,相关帖子: