2016-06-15 6 views
2

Signal RとAngularでかなり簡単なチャットアプリケーションを構築していますが、基本的にはUIが入力を行うまで更新されません。それからクリックするか、それがAngular 1.5 UIがユーザーが別の入力を行うまで更新しない

ここでメッセージボードここ

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

に追加機能の一つであるウェブサイトhttp://coolkidschat.azurewebsites.net/Home(名前、心にpopedランダムなだけで何かを言い訳)であるのですキーを押しますメッセージを入力してEnterキーを押すだけで何が起こっているのかをはるかに簡単に確認できますあなたは別のキーを押すか、ボックスの外をクリックします。

私は$scope.$applyを使用してみましたが、私はそれを

編集を削除したので、それがdoign何かをBRに見えるdosent:ちょうどメッセージが送信される方法について、それを明確にします。また、ちょうど私が

ものの、今働いて、私の最後の公開に他の何かを壊した気づいた:> Serverに送信します - - - >サーバーあまりにもすべてのクライアントを送信>角度がページに追加し

編集

ユーザーは、メッセージを入力します

+0

具体的に起こっている/更新されていない/更新されているものはありますか? –

+0

メッセージがボックスに表示され、メッセージの送信フローが更新されます – Toxicable

+0

申し訳ありませんが、実際のコードが表示されずに助けてください。 – typologist

答えて

2

$scope.$apply()は私のために修正しています。あなたのコードはAngularのダイジェストサイクルの外で実行されています。その方法の最後に$scope.$apply()を置きます。デバッガでは、それが私の最後に問題を修正します。

+1

ああ、それは今働いています。 '$ scope。$ apply()'です。それを指摘してくれてありがとう – Toxicable

0

現在のサイクル中または将来の時点で、$scope.$evalAsync()を使用してスコープで式を実行できます。したがって、試してみてください:

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

これは '$ scope。$ apply()'を使うよりも良いでしょうか?今問題を解決しているようです。 – Toxicable

+0

@毒性がありますので、こちらをご覧ください。http://www.bennadel.com/blog/2751-scope-applyasync-vs-scope-evalasync-in-angularjs-1-3.htm –

+0

なしあなたのニーズによります。 $ evalAsyncについての良い点は、可能であれば、現在のダイジェストサイクル中に式を評価しようと試みることです。それ以外の場合は、式を評価しようとします。 – typologist

関連する問題