2014-06-11 3 views
1

AngularJS/signalR을 사용하여 간단한 SPA를 수행하여 앱 시작시 Hello 허브에 알림을 보냈습니다.내 UI가 한 번만 업데이트되는 이유는 무엇입니까?

클라이언트 측에서 컨트롤러가 관리하는 알림 목록이 있습니다. 이 목록은 한 번만 업데이트되었지만 console.log 덕분에 매번 콜백이 호출되는 것을 볼 수 있었지만 디버거에서는 this.messages가 수신 될 때마다 증가하는 것으로 나타났습니다. 첫 번째 호출 (현재 클라이언트에서 이미 전송 한 UI)에서 UI 만 업데이트되는 이유는 알 수 없습니다.

다음은 한 번만 작동하는 코드입니다. 콜백은이 각도에서 호출되지부터 인식 범위가 아니기 때문에

NotificationCtrl.prototype.hello = function() { 
     console.log("hello"); 
     this.messages.push(new Notification("Tom", "Now", "Is now connected")); 
} 
+0

를 사용하여 설치 '$ sco를 추가하려고 했습니까? pe. $ apply'가 작동하는지 확인하려면? – Ven

+0

아니요,이 줄은 어디에 넣어야합니까? 또한 "컨트롤러로"구문을 사용하기 시작했고 $ scope를 사용할 수 없습니다. – Dave

+1

콜백에서 말했었 겠지만 범위가 없다면 실제로 어려울 것입니다. – Ven

답변

1

당신은 $scope.$apply해야합니다.

내 라이브러리에서 SignalR.EventAggregatorProxy이라는 많은 혜택을 얻을 것이라고 생각합니다. 이벤트 집계 패턴을 중심으로 디자인되었으며, 녹아웃 또는 각도가있는 MV * 활성화 사이트에 적합합니다.

내가 그것에 대해 한 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

데모 프로젝트 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/tree/master/SignalR.EventAggregatorProxy.Demo.MVC4

최근 블로그 게시물을 설정하는 위키에서보세요 http://andersmalmgren.com/2014/05/27/client-server-event-aggregation-with-signalr/

nuget

Install-Package SignalR.EventAggregatorProxy 
+0

입니다. 실제로 매우 흥미로운 것 같습니다. 나는 두 번째 단계에서 evaggretion을 볼 계획 이었지만 친절하게도 내 문제를 해결하고 정리하는 솔루션을 제게 제공했습니다. 나는 그것을 분명히 볼 것이다. – Dave

관련 문제