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);
}
};