2013-03-23 43 views
2

我一直试图在角度数据中传递我的sse数据,但它不会显示。这里是我的尝试:html 5 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。任何想法?非常感谢。

回答

0

如果事件发生,则以name:,age:结果结束。所有你应该做的是concat而不是push ing,因为你正在接收一个数组。

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

请记住,$scope.items参考会发生变化,究竟会不会破角,但可能breake任何其他引用它。如果您不需要更改,请使用forpush每个元素。

+0

谢谢caiotoon。我尝试了concat,但它从它获取更新时似乎无法更改它。 =(然后我再试一次,但似乎没有工作,我看到一些关于手表的文章,它可能类似于concat? – vincentlkl

+0

事件是否正在触发?是否在处理程序中放置了一个'console.log'或'debugger'?不,'$ watch'是一种观察属性改变的方法,'concat'是一个将两个数组连接成一个数组的方法,'push'将整个数组参数作为目标数组中的一个入口。 –