我正在写一些代码来稍微修改一个现有的网站。
现有的网站是用Angular构建的。我的代码使用jQuery,但我可以使用任何JavaScript。
但是,我无法更改现有的网站。我无法更改现有的Angular脚本。我可以改变我的一个外部脚本文件,这是一个在网站上的src。我的代码在Angular脚本和jQuery脚本加载后运行。
- 在Angular完成DOM渲染后,如何运行jQuery代码?*
$(document).ready()
触发得太早。
我从来没有使用过Angular,但在线阅读,它看起来应该会发出$viewContentLoading
事件,但是我还没有能够在我的脚本中捕获这个事件。
谢谢你,
2条答案
按热度按时间hrysbysz1#
你说得对。在尝试运行任何jQuery之前,您需要等待DOM加载!
简单但不安全的方法是在angualrjs中使用
$timeout
。See the doc here的数据。字符串
这是告诉angualrJs等待50毫秒,然后执行函数内部的任何内容。50毫秒应该足够了--但如果页面加载速度慢,您可能需要增加它。
有更好的方法!
你应该研究directives以避免使用jQuery。
aurhwmvo2#
截止日期:
组件样本
字符串
说明
1.下载jquery min css和js文件到您的公共资产dirsrc/assets
1.通过angular.json文件中的styles和scripts数组分别添加这些CSS和JS JQuery文件。
1.为了测试jquery / $是否正确添加,您不应该遇到任何由于这些更改而导致的构建错误,否则很可能是由于缺少所需的资产而导致的。
1.在最后一次导入任何组件或服务之后添加第5行以访问$。
1.第一个月
1.在最后一次导入任何组件或服务以访问JQuery之后添加下面的行。
但是,必须注意angular component lifecycle
因为大多数人会尝试访问ngOnInit方法中的
$ / JQuery
,它被调用一次,最适合初始化未就绪状态事件。1.在必须访问
$ / Jquery
的组件中,必须访问implement
AfterViewInit
和override/implement
ngAfterViewInit()
,Angular完成 * 组件视图 * 的初始化后立即调用。它只在视图示例化/准备渲染时调用一次。因此,您可以考虑编写任何必须在
ngAfterViewInit
方法中等待$(document).ready()
的代码块,以确保实现AfterViewInit
。