Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular 1.5用户界面在用户再次输入之前不会更新_Javascript_Angularjs_Signalr - Fatal编程技术网

Javascript Angular 1.5用户界面在用户再次输入之前不会更新

Javascript Angular 1.5用户界面在用户再次输入之前不会更新,javascript,angularjs,signalr,Javascript,Angularjs,Signalr,因此,我建立了一个非常简单的聊天应用程序,带有信号R和Angular,但是我遇到了一个问题,即用户输入之前,用户界面基本上不会更新,即点击输入框或点击出输入框或按键 下面是添加到留言板的功能之一 hub.client.broadcastMessage = function (message) { $scope.messageBoard.push(message) var element = document.getElementById('messageBoard') e

因此,我建立了一个非常简单的聊天应用程序,带有信号R和Angular,但是我遇到了一个问题,即用户输入之前,用户界面基本上不会更新,即点击输入框或点击出输入框或按键

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

hub.client.broadcastMessage = function (message) {
    $scope.messageBoard.push(message)
    var element = document.getElementById('messageBoard')
    element.scrollTop = element.scrollHeight
}
这是一个网站(请原谅这个名字,只是一些突然出现在脑海中的随机信息),如果你只需输入一条消息,然后按enter键,你就会很容易看到正在发生的事情。你会注意到,在你按下另一个键或点击弹出框之前,一切都不会改变

我尝试过使用
$scope.$apply
,但该选项似乎会删除任何内容,因此我已将其删除

编辑:只是为了弄清楚消息是如何发送的

用户输入消息->发送到服务器->服务器发送太多的客户端->将其附加到页面


编辑:还注意到我在上一次发布时弄坏了其他东西,现在正在工作,尽管

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

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

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

什么具体应该发生/更新而不是发生/更新?消息应该出现在框中,用消息如何发送的流程更新帖子对不起,没有看到实际的代码很难提供帮助。@我可以发布代码,但我不确定具体是哪一部分在做。我在页面的maint部分添加了一个函数,您可以看到消息,这是它与Angularo交互的地方哦,是的,现在正在工作,也许我在尝试使用
$scope.$apply()
时遇到了另一个问题。感谢您指出,这比使用
$scope.$apply()
更好?这似乎解决了我的问题now@Toxicable,请看这个没有更好的,只是取决于你的需要。$evalAsync的好处是,如果可能的话,它将在当前摘要周期中尝试计算表达式,否则在下一个摘要周期中尝试计算表达式。