我通過WebSocket連接到我的服務器並接收一些實時更新。通過$rootScope.$broadcast
我將這些更新廣播給在應用程序中偵聽的任何人。
function handleTickerMessage(msg){
//console.log(JSON.stringify(msg));
$rootScope.$broadcast(config.events.ticker, msg);
}
在控制器我訂閱該事件並更新某些局部變量
$scope.mainPair = {
name: '',
buy: 110.00,
sell: 80.00
};
$scope.$on(config.events.ticker, function(event, ticker){
if (config.mainPage.prodPair === ticker.prodPair){
$scope.mainPair.name = config.mainPage.prodPair;
$scope.mainPair.buy = parseFloat(ticker.bid);
$scope.mainPair.sell = parseFloat(ticker.ask);
}
});
在HTML文件中我試圖顯示這些新值
<span><i class="down"></i><em>{{mainPair.buy | currency}}</em></span>
但對於一些他們沒有被顯示的原因。我知道我的$on
被調用,並且if
正在工作。那麼爲什麼UI不更新?
滑稽認爲,如果我從mainPair
在點擊事件訪問值
$scope.signUp = function(){
console.log('buy: ' + $scope.mainPair_buy);
return;
}
然後我得到的最後一個值和UI更新!
那麼爲什麼在事件發生時UI不會更新?
THX
你可以試試'$ scope。$ apply()'在你的'$ on'中,只是爲了確定嗎? – Ven
嘗試添加'$ scope。$ apply()' – Safari