2016-06-15 3 views
2

신호 R 및 각도를 사용하여 매우 간단한 채팅 앱을 만들었지 만 사용자가 입력을 할 때까지 기본적으로 UI가 업데이트되지 않는 곳에서 입력 상자를 클릭하거나 그것의 클릭하거나, 그것은Angular 1.5 UI가 사용자가 다른 입력을 할 때까지 업데이트되지 않음

여기에 messageboard 여기

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 : 단지 메시지를 전송하는 방법에 그것을 명확하게 할 수 있습니다. > 서버로 전송 - -가> 서버가 너무 모든 클라이언트를 전송 -

사용자는 메시지가 입력하는 각 페이지에 추가합니다>

편집 : 또한 단지 내가에 다른 뭔가를 부러주의 마지막

하지만 지금 작업, 게시
+0

어떤 일이 일어날 예정입니까? –

+0

메시지가 상자에 나타나야하며 메시지가 전송되는 방법의 흐름으로 게시물이 업데이트되었습니다. – Toxicable

+0

죄송합니다. 실제 코드를 보지 않고는 도움이되지 않습니다. – typologist

답변

2

$scope.$apply()은 나를 위해 수정되었으며, 코드가 앵귤러의 다이제스트주기를 벗어나 실행되어야합니다. 해당 방법의 마지막에 $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

관련 문제