0

在我的 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

请帮助我,谢谢!

4

1 回答 1

1

这是因为 Angular 只加载初始视图中的 DOM 元素。您将需要编写一个脚本,该脚本将在路线更改时重新运行您的脚本。

我解决这个问题的方法是绑定到路由器事件,当路由发生变化时,使用 jQuery AJAX 获取脚本并运行结果。

于 2017-08-06T18:19:00.553 回答