2013-03-23 65 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'將整個數組參數作爲目標數組中的一個入口。 –