Скрипты в Angular 4 не работают после изменения вида
В моем приложении angular 4 у меня есть какой-то скрипт, когда я загружаю первый раз все нормально, но когда меняю вид на другой компонент моего приложения и возвращаюсь на главную страницу, все сломанные скрипты не работают. в журнале консоли отправить сообщение, например, это функция прокрутки вверх
$(window).scroll(function() {
var wScroll = $(this).scrollTop(), scrollAmount = 150;
if (wScroll > scrollAmount) {
$(".button__scroll--up").addClass("is_showing");
} else {
$(".button__scroll--up").removeClass("is_showing");
}
});
$('.button__scroll--up').click( function(){
$('html , body').animate({scrollTop: 0},1000);
})
и журнал консоли отправьте это
Uncaught TypeError: Cannot read property 'top' of undefined
at HTMLDivElement.<anonymous> (efects-styles.js:58)
at HTMLDivElement.dispatch (jquery.min.js:3)
at HTMLDivElement.r.handle (jquery.min.js:3)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (polyfills.bundle.js:2839)
at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.runTask (polyfills.bundle.js:2606)
at ZoneTask.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneTask.invokeTask [as invoke] (polyfills.bundle.js:2913)
at invokeTask (polyfills.bundle.js:3779)
at HTMLDivElement.globalZoneAwareCallback (polyfills.bundle.js:3797
пожалуйста, помогите мне, спасибо!
1 ответ
Это связано с тем, что Angular загружает только те элементы DOM, которые находятся в начальном виде. Вам нужно будет написать скрипт, который будет перезапускать ваши скрипты при изменении маршрута.
Метод, который у меня есть для этой проблемы, заключается в привязке к событиям маршрутизатора, а при изменении маршрута используйте jQuery AJAX для извлечения сценария и запуска результата.