gpt4 book ai didi

javascript - Angular 如何确定 jQuery 是否存在?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:47 28 4
gpt4 key购买 nike

因为我遇到了一个奇怪的情况,即 Controller 的链接函数中的 Angular 对象(如 element)最终成为一个 jQLite 对象,尽管 jQuery 确实存在,因为它被加载到内存中并被成功使用同一页面的其他地方。

Angular FAQ 在这个问题上相当含糊:

Yes, Angular can use jQuery if it's present in your app when the application is being bootstrapped. If jQuery is not present in your script path, Angular falls back to its own implementation of the subset of jQuery that we call jQLite.

那么“现在”到底是什么意思?

最佳答案

如果首先包含 Angular.js,它将使用 jQuery,否则它将使用它自己的 jqLit​​e。如果你在 AngularJS 之后加载 jQuery,AngularJS 将自身附加到 jqLit​​e 但你仍然可以通过 $.jQuery 访问 jQuery。

请参阅下面 angular.js 用于确定是否加载了 jquery 的代码:

  // bind to jQuery if present;
jQuery = window.jQuery;
// Use jQuery if it exists with proper functionality, otherwise default to us.
// Angular 1.2+ requires jQuery 1.7+ for on()/off() support.
// Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older
// versions. It will not work for sure with jQuery <1.7, though.
if (jQuery && jQuery.fn.on) {
jqLite = jQuery;
extend(jQuery.fn, {
scope: JQLitePrototype.scope,
isolateScope: JQLitePrototype.isolateScope,
controller: JQLitePrototype.controller,
injector: JQLitePrototype.injector,
inheritedData: JQLitePrototype.inheritedData
});

更改脚本标签的顺序可能不会经常发生,但如果您开始模块化代码库,它可能会发生。特别是,this issue has happened同时使用一些模块加载器,如 RequireJS。

关于javascript - Angular 如何确定 jQuery 是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29216155/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com