我正在創建基於簡單獲取和使用一些php和AngularJS後發佈的聊天。由於聊天需要不斷刷新數據,我想知道什麼是刷新數據的最佳方式?我是如何做到的是如何在沒有屏幕閃爍的情況下刷新數據angularJS
$scope.LoadData = function() {
$http.get('php/getchatmessages.php')
.then(
function (response) {
$scope.data.messages = [];
$scope.data.messages = response.data;
$scope.evid = $scope.data.messages[0].EventID;
},
function (response) {
alert(response.data);
}
);
$interval(function(){$scope.LoadData()},5000);
};
這不僅會導致屏幕閃爍,但刷新的速度隨着時間的推移加快,採取了大量的處理器,慢慢地崩潰的瀏覽器。
刷新正在發生,因爲您清除了所有消息,然後再次將它們添加回來。您應該只推送$ scope.data.messages新消息,而不是刪除所有內容。此外,對於這種應用程序更好使用Web套接字。 –
@RocoCTZ我如何才能獲得新的更改?是的,我聽說過網絡套接字,但我正在尋找更簡單的解決方案,因爲時間有限。 – Lester
在您的觀點中,假設所有消息都有一個ID並且您使用了ng-repeat,請在data.messages track中使用'ng-repeat =「消息通過message.id「'。這使得ure angular不會刪除所有元素並重新創建它們,而是更新現有的dom節點。另外,刪除'$ scope.data.messages = [];'這行並不會傷害,但是完全沒用。 –