Meilleure compréhension des comportements Drupal

51

J'ai lu des articles sur les comportements de Drupal aujourd'hui et j'ai essayé d'écrire le code suivant.

(function ($) {

  Drupal.behaviors.mymodule = {
    attach: function (context, settings) {
      $('#mymodule_id', context).change(function () {
        alert('Handler for .change() called.');
      });
    }
  };

}(jQuery));
  • Est-ce que Drupal.behaviors.mymodulel'espace de noms?
  • Quels sont les paramètres de contexte et de paramètres transmis au comportement Drupal?
  • Est-ce l'équivalent de document.ready()?
  • Puis-je attacher un nombre quelconque de fonctions?
  • Puis-je définir des fonctions JavaScript qui seront appelées quelque part?
Pirate
la source
Ce billet de blog de Lullabot explique très bien les concepts relatifs aux comportements JS: lullabot.com/articles/…
Steve Persch le

Réponses:

56

En bref, l'avantage des comportements document.ready()est qu'ils sont automatiquement réappliqués à tout contenu chargé via AJAX. mymoduleest votre espace de noms, qui doit être unique. contextest la partie de la page à laquelle cela s'applique, par exemple une partie d'un formulaire mis à jour avec AJAX. Vous pouvez associer plusieurs comportements, mais je pense que vous devez utiliser un nom unique (mymodule) pour chacun de ceux-ci.

Consultez les ressources suivantes pour plus d'informations:

Berdir
la source
2

En termes simples, Drupal.behaviorsest une meilleure façon de mettre en œuvrejQuery.ready

Contrairement à jQuery.readyce qui ne s’exécute qu’une fois lorsque le DOM est prêt, il Drupal.behaviorspeut être exécuté plusieurs fois au cours de l’exécution de la page.

Par exemple, dans les vues défilement infini, plus d'éléments seront chargés lorsque l'utilisateur cliquera sur le bouton Charger plus, de sorte que DOM changera après le chargement initial.

Et si nous voulons ajouter des classes aux éléments nouvellement ajoutés? Ici, les comportements Drupal sont utiles.

Les comportements seront exécutés à chaque demande, y compris les demandes AJAX.

Drupal appellera les comportements attachés lorsque le DOM est chargé et également lorsqu'il est modifié par Ajax, en passant deux arguments

contexte et paramètres

La première fois que Drupal.attachBehaviors () est appelé, la variable de contexte contient l'objet document représentant le DOM, mais pour le reste des appels , le contexte contiendra le fichier HTML affecté.

paramètres contient des informations transmises à JavaScript via PHP, cela revient à y accéder via Drupal.settings.

De plus, les modules peuvent également appeler Drupal.attachBehaviors ().

Vivek Agarwal
la source