Angular 1.5 UI 在用户再次输入之前不会更新

Angular 1.5 UI not updating till user makes another input

所以我用 Signal R 和 Angular 构建了一个非常简单的聊天应用程序,但是我遇到了一个问题,基本上 UI 不会更新,直到用户输入 IE 单击输入框或单击它或按下一个键

这是添加到留言板的功能之一

hub.client.broadcastMessage = function (message) {
    $scope.messageBoard.push(message)
    var element = document.getElementById('messageBoard')
    element.scrollTop = element.scrollHeight
}

这是网站 http://coolkidschat.azurewebsites.net/Home(请原谅这个名字,只是突然想到的一些东西),如果您只输入一条消息并按回车键,就可以更容易地看到发生了什么,您会发现什么都没有将更改,直到您按下另一个键或单击开箱即用。

我试过使用 $scope.$apply,但那个剂量似乎无法使用,所以我删除了它

编辑:只是为了说明消息是如何发送的。

用户输入消息 -> 发送到服务器 -> 服务器也发送给所有客户端 -> angular 将其附加到页面

编辑:刚刚还注意到我在上次发布时破坏了其他东西,不过现在可以工作了

$scope.$apply() 为我修复了它,它应该 - 您的代码在 Angular 的摘要周期之外执行。只需在该方法的末尾放置一个 $scope.$apply() 即可。在调试器中,这解决了我这边的问题。

您可以使用 $scope.$evalAsync() 在当前周期或未来某个时间点在作用域上执行表达式。所以尝试:

$scope.$evalAsync(function() {
    $scope.messageBoard.push(message);
});