更新AngularJS中的视图后回调

时间:2013-10-09 19:40:29

标签: javascript angularjs

我刚刚开始学习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还没有更新(是吗?)。 我该怎么做才能在每次更新此视图时调用该方法?

1 个答案:

答案 0 :(得分:1)

我最近问了一个类似的问题,接受的答案解决了我的问题:How to call a function when Angular is done updating the layout because of data changes

基本上,我将函数包装在另一个函数中。外部函数检查$ scope. $$阶段。如果仍然应用或消化,我使用$ timeout在100毫秒内重新调用外部函数。如果没有,那么我调用该函数。