#javascript #angular #sockets #socket.io #angular7
#javascript #angular #сокеты #socket.io #angular7
Вопрос:
При обновлении элемента массива используйте сокет.io затем страница прокручивается вниз в Angular 7. Пожалуйста, расскажите, как остановить прокрутку страницы вниз в подобном событии.
this.socket.on(discussion.id, (reponse: any) =>
{
for (const [index, discussion] of this.discussionList.entries()) {
if (reponse.data.id == discussion.id)
{
reponse.data.displayComment = discussion.displayComment;
this.discussionList[index] = reponse.data;
console.log('Updated');
break; //Stop this loop, we found it!
}
console.log('finding....');
}
});
Комментарии:
1. пожалуйста, предоставьте более подробную информацию о том, что вы сделали для достижения этого?
Ответ №1:
Вы в основном обновляете некоторый случайный элемент в массиве, который отображается в виде списка. Конечно, ваш список изменит содержимое, и новое содержимое может появиться в текущем представлении. Это то, как работает html в браузере — ничего, связанного с «Angular 7». Прокрутка не изменена — изменено то, что видно в текущей прокрутке.
То, что вы хотите сделать, — это простое безумие JS:
- Перед обновлением массива «запомните», что было видно в текущем прокручиваемом представлении. Например, вы читаете scrollTop, и они перебирают каждый элемент в списке и проверяют его смещение от top — ближайший к scrollTop — win.
- После обновления списка найдите этот элемент и прокрутите его обратно.
Это грязно, тяжело для производительности, но это цена изменения случайного фрагмента html на странице.