web-dev-qa-db-fra.com

Meilleure compréhension des comportements Drupal

J'ai lu sur Drupal comportements 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));
  • Drupal.behaviors.mymodule Est-il l'espace de noms?
  • Quels sont les paramètres de contexte et de paramètres passés au comportement Drupal?
  • Est-ce l'équivalent de document.ready()?
  • Puis-je attacher un certain nombre de fonctions?
  • Puis-je définir des fonctions JavaScript qui seront appelées quelque part?
53
Hacker

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

Jetez un œil aux ressources suivantes pour plus d'informations:

57
Berdir

En termes simples, Drupal.behaviors est une meilleure façon de mettre en œuvre jQuery.ready

Contrairement à jQuery.ready qui ne s'exécute qu'une fois lorsque le DOM est prêt, Drupal.behaviors peut être exécuté plusieurs fois pendant l'exécution de la page.

Par exemple, dans les vues à défilement infini, plus d'éléments seront chargés lorsque l'utilisateur clique sur le bouton charger plus, par conséquent, DOM changera après le chargement initial.

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

Les comportements seront exécutés sur chaque requête, y compris les requêtes 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 context contient l'objet document représentant le DOM, mais pour le reste des appels, le contexte contiendra la partie HTML affectée.

settings contient des informations transmises à JavaScript via PHP, c'est similaire à y accéder via Drupal.settings.

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

2
vivek agarwal