我刚刚开始学习AngularJS,我创建了一个小型的Web应用程序来锻炼自己。这是一个“聊天”,因此用户编写一条消息,该消息存储在$scope
的消息数组中。现在,我想在向视图显示消息时将滚动条移动到底部(<p ng-repeat="message in messages">{{message.user}}: {{message.text}}
)。所以我做了类似的事情:
$scope.messages.push(obj);
$("#messages").prop({scrollTop: $("#messages").prop("scrollHeight")}); // jQuery method, is there something like that in AngularJS ?
但是,它不起作用。 jQuery方法本身有效,但我认为在调用它时,wiew还没有更新(是吗?)。 我该怎么做才能在每次更新此视图时调用该方法?
答案 0 :(得分:1)
我最近问了一个类似的问题,接受的答案解决了我的问题:How to call a function when Angular is done updating the layout because of data changes
基本上,我将函数包装在另一个函数中。外部函数检查$ scope. $$阶段。如果仍然应用或消化,我使用$ timeout在100毫秒内重新调用外部函数。如果没有,那么我调用该函数。