我正在研究一个使用两个JS文件的Drupal库-一个内部用于创建设置对象,另一个内部(供应商库)。
这是使用Drupal的必需包装器创建_settingsObject
的本地文件。
(function ($) {
'use strict';
Drupal.behaviors.myBehavior = {
attach: function (context, settings) {
_settingsObject = {
...
};
}
};
})(jQuery);
我唯一遇到的问题是另一个文件无法看到该对象,并且无法在控制台中访问它。如何使该对象在全局范围内可用?
谢谢!
答案 0 :(得分:0)
您可以将其添加到窗口对象。这样做:
(function ($, window) {
'use strict';
window.globalVar = "My Global Var";
Drupal.behaviors.myBehavior = {
attach: function (context, settings) {
_settingsObject = {
...
};
}
};
})(jQuery, window);
答案 1 :(得分:-1)
正如您所暗示的,原因是由于范围。我不是100%可以正常工作,因为我对该函数的了解不多,但是看起来它正在做什么(如果我错了,请纠正我)正在向Drupal.behaviors中添加_settingsObject
。 myBehavior对象,以便在调用它时会调用Drupal.behaviors....。如果是这种情况,请尝试在函数末尾返回该对象。
(function ($) {
'use strict';
Drupal.behaviors.myBehavior = {
attach: function (context, settings) {
const _settingsObject = {
...
};
return _settingsObject;
}
};
})(jQuery);
如果不是这种情况,请修改您的问题以包括更多代码,以及在另一个文件中到底要调用什么以及如何调用它。如果要获取名为_settingsObject的对象,则需要返回该对象并使其可从全局范围的命名空间访问。