gpt4 book ai didi

javascript - 将 jQuery 命名空间注入(inject) AngularJS

转载 作者:行者123 更新时间:2023-12-01 05:36:13 25 4
gpt4 key购买 nike

我这里遇到了一些麻烦。

我正在使用 RequireJS 加载我的模块和依赖项。我试图避免污染全局命名空间,因此我使用以下配置作为起点,以避免在全局窗口对象中定义 $jQuery:

require.config({
map: {
'*': { 'jquery': 'jquery-no-conflict' },
'jquery-no-conflict': { 'jquery': 'jquery' }
},
shim: {
'jquery': { exports: 'jQuery' },
'angular': { exports: 'angular', deps: ['jquery'] }
// ...
}
});

模块jquery-no-conflict看起来像这样:

define('jquery-no-conflict', ['jquery'], function (jQuery) {
return jQuery.noConflict(true);
});

这显然解决了问题,但有一个问题。

我不知道无论 jQuery 是否加载,AngularJS 的行为都会有所不同,显然,这是通过检查全局命名空间来完成的。

例如,如果没有找到或加载 jQuery,AngularJS $window 将是 native 元素 window 的包装器,但它将是 jQuery 的 的包装器>$(window) 如果定义了 jQuery。

对于我网站上的某些功能,我需要后者,但通过此配置,我得到前者(因为 AngularJS 似乎找不到 jQuery);

是否有某种方法可以将我的 jQuery 模块/变量注入(inject) AngularJS 并且让它不检查全局命名空间?

正如您所看到的,我的 jquery 模块正在导出,因此 RequireJS 在请求时会为我提供一个作用域变量。

如果这是不可能的,那么在我的情况下你会怎么做?可以采取什么措施来解决这个问题?

最佳答案

如果传统的 jQuery 全局变量导致问题,可以使用 ng-jq attrubute 为 jQuery 提供自定义 window 属性。 .

截至今天,Angular 仍然依赖全局变量,jQuery isn't an exception .

关于javascript - 将 jQuery 命名空间注入(inject) AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33899758/

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