Как добавить глобальную переменную в пользовательский файл js


Я добавил свой пользовательский скрипт, завернутый в:

(function ($) {

    Drupal.behaviors.exampleModule = {
        attach: function (context, settings) {

Но не может создать глобальную переменную внутри нее

Author: sel_space, 2012-07-31

1 answers

Вы можете сделать что-то вроде

(function ($, Drupal, undefined) {
    var my_global;

    Drupal.behaviors.exampleModule = {
        attach: function (context, settings) {
            my_global = 1234;
        }
    }
})(jQuery, Drupal)

И правила цепочки областей действия Javascript сделают my_global видимым для всего вашего закрытия . Если вам нужен настоящий глобальный, переместите объявление my_global:

var my_global;

(function ($, Drupal, undefined) {
    Drupal.behaviors.exampleModule = {
        attach: function (context, settings) {
            my_global = 1234;
        }
    }
})(jQuery, Drupal)

Лично мои файлы JS для Drupal начинаются как

var MYMODULE = (function(me, $, Drupal, undefined) {
    me.name = "MYMODULE";

    function attach (context, settings) {
        console.log(me.name + ".attach()");
    }

    Drupal.behaviors[me.name] = {
        attach: attach
    };

    return me;
}(MYMODULE || {}, jQuery, Drupal));

И затем я добавляю локальные значения для переменных всего модуля или непосредственно в модуль, если они нужны другим модулям. В статье Шаблон модуля JavaScript: Подробно объясняется это очень хорошо.

 15
Author: mpdonadio, 2017-05-23 12:41:25