更改视图后,Angular 4中的脚本无法正常工作

时间:2017-08-06 14:51:35

标签: javascript angular web angular-components angular-component-router

在我的角度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 个答案:

答案 0 :(得分:0)

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

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