2

我一直试图在角度数据中传递我的 sse 数据,但它不会显示。这是我尝试的方法:

(我的观点)

<body ng-app>
  <div ng:controller="Main">
    <ul>
      <li ng:repeat="item in items">
        name:{{item.name}},age:{{item.age}}
      </li>
    </ul>
  </div>
</body>

(角脚本)

var source = new EventSource('/feedcontain/test');

function Main($scope) {

  $scope.items = [];

  source.addEventListener('right', function(e) {
     $scope.$apply(function() {
      $scope.items.push(e.data);
     });
    },
  false);

 }    

(/feedcontain/测试)

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

echo "data: [{name:'john', age:23}, {name:'Mary', age:28}, {name:'Sean', age:28}] \n\n";

我想显示name:john, age:23,但它返回空。我试图在更改数据或添加之后创建一些东西,然后它将推送到 angularjs。任何想法?非常感谢。

4

1 回答 1

0

如果事件一直在发生,你会以一个name:,age:结果结束。那么你应该做的就是concat而不是pushing,因为你正在接收一个数组。

$scope.items = $scope.items.concat(e.data);

请记住,$scope.items引用会改变,不会破坏 Angular,但可能会破坏对它的任何其他引用。如果您需要它不更改,for请对push每个元素使用 a。

于 2013-03-23T13:27:31.193 回答