angularjs Angular加载完成后运行jQuery

pbwdgjma  于 2023-08-02  发布在  Angular
关注(0)|答案(2)|浏览(103)

我正在写一些代码来稍微修改一个现有的网站。
现有的网站是用Angular构建的。我的代码使用jQuery,但我可以使用任何JavaScript。
但是,我无法更改现有的网站。我无法更改现有的Angular脚本。我可以改变我的一个外部脚本文件,这是一个在网站上的src。我的代码在Angular脚本和jQuery脚本加载后运行。

  • 在Angular完成DOM渲染后,如何运行jQuery代码?*

$(document).ready()触发得太早。
我从来没有使用过Angular,但在线阅读,它看起来应该会发出$viewContentLoading事件,但是我还没有能够在我的脚本中捕获这个事件。
谢谢你,

hrysbysz

hrysbysz1#

你说得对。在尝试运行任何jQuery之前,您需要等待DOM加载!
简单但不安全的方法是在angualrjs中使用$timeoutSee the doc here的数据。

$timeout(function() {
    //your jQuery code here
}, 50);

字符串
这是告诉angualrJs等待50毫秒,然后执行函数内部的任何内容。50毫秒应该足够了--但如果页面加载速度慢,您可能需要增加它。

有更好的方法!

你应该研究directives以避免使用jQuery。

aurhwmvo

aurhwmvo2#

截止日期:

组件样本

import { Component, OnInit, AfterViewInit } from '@angular/core';
declare const $: any;
declare const JQuery: any;
@Component({
  selector: 'app-jquery',
  templateUrl: './jquery.component.html',
  styleUrls: ['./jquery.component.scss']
})
export class JQueryComponent implements OnInit, AfterViewInit {
  constructor() { }
  ngAfterViewInit(): void {
    // Right way, view fully ready here
    console.log($); 
  }

  ngOnInit(): void {
    // Wrong, view not always fully ready here
    console.log(JQuery); 
  }

}

字符串

说明

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的组件中,必须访问implementAfterViewInitoverride/implementngAfterViewInit(),Angular完成 * 组件视图 * 的初始化后立即调用。它只在视图示例化/准备渲染时调用一次。
因此,您可以考虑编写任何必须在ngAfterViewInit方法中等待$(document).ready()的代码块,以确保实现AfterViewInit

相关问题