2014-10-13 58 views
0

我是一個角度新手,我正在一些聊天網站的應用程序。角度渲染/刷新只有當重點

最近我注意到,當用戶收到來自其他聯繫人的消息,並且瀏覽器選項卡未聚焦時,消息歷史記錄不會顯示新消息。只有當我用鼠標按下該選項卡並將其重新插入以進行聚焦時,纔會正確呈現新消息。

這是行爲設計​​嗎?如果是,是否有解決方法? 如果不是,這是一個錯誤,我應該在哪個方向搜索?

謝謝!

回答

0

如果你正在從外部AngularJS(例如Socket.io)你的消息,你需要調用$scope.apply()於是更新你的看法。

甚至更​​好,你可以定義一個saveApply功能確保AngularJS不$digest狀態,如果你打電話apply這將拋出一個異常(有希望在將來的版本,這將是默認行爲)

$scope.safeApply = function(fn) { 
    var phase = this.$root.$$phase; 
    if(phase == '$apply' || phase == '$digest') { 
    if(fn && (typeof(fn) === 'function')) { 
     fn(); 
    } 
    } else { 
    this.$apply(fn); 
    } 
};