Я создаю чат, основанный на простых приемах и сообщениях с использованием некоторых 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 новые сообщения, а не удалять все. Кроме того, для такого типа приложений лучше использовать веб-сокеты. –
@RocoCTZ как я могу получить только новые изменения? Да, я слышал о веб-сокетах, но я ищу более простое решение, поскольку время ограничено. – Lester
На ваш взгляд, если все сообщения имеют идентификатор, и вы используете ng-repeat, используйте сообщение «ng-repeat =» в методе data.messages по message.id ". Это приводит к тому, что угловой угол не удаляет все элементы и воссоздает их, но вместо этого обновляет существующие dom-узлы. Также удалите строку '$ scope.data.messages = [];', что не повредит, но совершенно бесполезно. –