javascript – Llamar a un método de comportamiento de drupal desde dentro de otro comportamiento

Pregunta:

¿Cómo se llama a un método de comportamiento de Drupal desde dentro de otro comportamiento? Mi ejemplo a continuación

(function ($) {
  Drupal.behaviors.exampleOne = {
    attach: function (context, settings) {
      $('.example', context).click(function () {
          $(this).next('ul').toggle('show');
      });
    }

    exampleMethod: function (context) {
      console.log('test');
    }
  };

  // call exampleOne from inside exampleTwo
  Drupal.behaviors.exampleTwo = {
    attach: function (context, settings) {
      $('.example-link', context).click(function () {
          Drupal.behaviors.exampleOne.exampleMethod(context);
      });
    }
  };
})(jQuery);

Vea cómo trato de llamar a exampleMethod() que pertenece al comportamiento exampleOne dentro del comportamiento exampleTwo? Creo que puedo llamarlo así, pero sigo undefined cuando lo llamo. Aunque si lo llamo así console.log(Drupal.behaviors.exampleOne.exampleMethod); , Obtengo la función escrita.

Respuesta:

Ejemplo de trabajo de https://web.archive.org/web/20150320092121/http://dropbucket.org/node/943 :

1. ) Be sure you have included JS files in your Drupal module files.

  $form['#attached']['js'][] = drupal_get_path('module', 'module_A') . '/module_A.js';
  $form['#attached']['js'][] = drupal_get_path('module', 'module_B') . '/module_B.js';

2. ) module_A.js file

(function ($) {
  Drupal.behaviors.module_A = {};
  Drupal.behaviors.module_A.my_function = function(selector) {
    // Your code.
  }
})(jQuery);

3. ) Call the function in module_B.js file
(function ($) {
   Drupal.behaviors.module_B = {};
   Drupal.behaviors.module_B.attach = function(context) {

   // This is the main part here. You have to respect the namespace of module A.
   Drupal.behaviors.module_A.my_function('.my-selector');
  }
})(jQuery);

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım