我有一个AngularJS应用程序与以下控制器.它在正常的
JSON资源和手动请求更新的GET工作正常,但我不能使其与服务器发送的事件一起工作.我遇到的问题是,在收到SSE事件并设置/更新openListingsReport变量后,我的视图没有得到更新.我显然缺少一个非常基本的概念.请帮我解决这个问题.
var rpCtrl = angular.module('rpCtrl',['rpSvc']); rpCtrl.controller('rpOpenListingsCtrl',['$scope','rpOpenListingsSvc',function ($scope,rpOpenListingsSvc) { $scope.updating = false; if (typeof(EventSource) !== "undefined") { // Yes! Server-sent events support! var source = new EventSource('/listings/events'); source.onmessage = function (event) { $scope.openListingsReport = event.data; $scope.$apply(); console.log($scope.openListingsReport); }; } } else { // Sorry! No server-sent events support.. alert('SSE not supported by browser.'); } $scope.update = function () { $scope.updateTime = Date.now(); $scope.updating = true; rpOpenListingsSvc.update(); } $scope.reset = function () { $scope.updating = false; } }]);
解决方法
问题出在如下:
$scope.openListingsReport = event.data;
应该是:
$scope.openListingsReport = JSON.parse(event.data);