在 AngularJS 中更新视图后的回调

Callback after updating a view in AngularJS

本文关键字:回调 新视图 更新 AngularJS      更新时间:2023-09-26

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

我最近问了一个类似的问题,接受的答案解决了我的问题:当 Angular 由于数据更改而完成更新布局时如何调用函数

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