JavaScript – 具有服务器发送事件的AngularJS

前端之家收集整理的这篇文章主要介绍了JavaScript – 具有服务器发送事件的AngularJS前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个AngularJS应用程序与以下控制器.它在正常的 JSON资源和手动请求更新的GET工作正常,但我不能使其与服务器发送的事件一起工作.我遇到的问题是,在收到SSE事件并设置/更新openListingsReport变量后,我的视图没有得到更新.我显然缺少一个非常基本的概念.请帮我解决这个问题.
  1. var rpCtrl = angular.module('rpCtrl',['rpSvc']);
  2.  
  3. rpCtrl.controller('rpOpenListingsCtrl',['$scope','rpOpenListingsSvc',function ($scope,rpOpenListingsSvc) {
  4. $scope.updating = false;
  5.  
  6. if (typeof(EventSource) !== "undefined") {
  7. // Yes! Server-sent events support!
  8. var source = new EventSource('/listings/events');
  9.  
  10. source.onmessage = function (event) {
  11. $scope.openListingsReport = event.data;
  12. $scope.$apply();
  13. console.log($scope.openListingsReport);
  14. };
  15. }
  16. } else {
  17. // Sorry! No server-sent events support..
  18. alert('SSE not supported by browser.');
  19. }
  20.  
  21. $scope.update = function () {
  22. $scope.updateTime = Date.now();
  23. $scope.updating = true;
  24. rpOpenListingsSvc.update();
  25. }
  26.  
  27. $scope.reset = function () {
  28. $scope.updating = false;
  29. }
  30. }]);

解决方法

问题出在如下:
  1. $scope.openListingsReport = event.data;

应该是:

  1. $scope.openListingsReport = JSON.parse(event.data);

猜你在找的JavaScript相关文章