Besseres Verständnis des Verhaltens von Drupal

51

Ich habe heute über das Verhalten von Drupal gelesen und versucht, den folgenden Code zu schreiben.

(function ($) {

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

}(jQuery));
  • Ist Drupal.behaviors.mymoduleder Namespace?
  • Welche Kontext- und Einstellungsparameter werden an das Drupal-Verhalten übergeben?
  • Ist das das Äquivalent von document.ready()?
  • Kann ich beliebig viele Funktionen anhängen?
  • Kann ich JavaScript-Funktionen definieren, die irgendwo aufgerufen werden?
Hacker
quelle
Dieser Blog-Beitrag von Lullabot erklärt hervorragend die Konzepte rund um JS-Verhaltensweisen: lullabot.com/articles/…
Steve Persch

Antworten:

56

Kurz gesagt, der Vorteil von Behaviours gegenüber Behaviours document.ready()besteht darin, dass sie automatisch auf alle Inhalte angewendet werden, die über AJAX geladen werden. mymoduleist Ihr Namespace, der eindeutig sein muss. contextist der Teil der Seite, für den dies gilt, beispielsweise ein Teil eines Formulars, das mit AJAX aktualisiert wurde. Sie können mehrere Verhaltensweisen hinzufügen, aber ich denke, Sie müssen für jedes einen eindeutigen Namen (meinModul) verwenden.

Weitere Informationen finden Sie in den folgenden Ressourcen:

Berdir
quelle
2

In einfachen Worten, Drupal.behaviorsist ein besserer Weg zu implementierenjQuery.ready

Im Gegensatz zu jQuery.readydem, der nur einmal ausgeführt wird, wenn das DOM bereit ist, Drupal.behaviorskann er während der Seitenausführung mehrmals ausgeführt werden.

Beispielsweise werden in Ansichten mit unendlichem Bildlauf mehr Elemente geladen, wenn der Benutzer auf die Schaltfläche "Mehr laden" klickt. Daher ändert sich DOM nach dem ersten Laden.

Was ist, wenn wir den neu hinzugefügten Elementen Klassen hinzufügen möchten? Hier bieten sich Drupal-Verhaltensweisen an.

Das Verhalten wird bei jeder Anfrage einschließlich AJAX-Anfragen ausgeführt.

Drupal ruft angehängte Verhaltensweisen auf, wenn das DOM geladen wird und wenn es von Ajax geändert wird, wobei zwei Argumente übergeben werden

Kontext und Einstellungen

Das erste Mal Drupal.attachBehaviors () wird die gerufene Kontextvariable enthält das Dokument - Objekt repräsentiert das DOM, aber für den Rest des Anrufe Zusammenhangs hält das betroffene Stück HTML.

settings enthält Informationen, die über PHP an JavaScript weitergeleitet werden, und ähnelt dem Zugriff über Drupal.settings.

Darüber hinaus können Module auch Drupal.attachBehaviors () aufrufen.

vivek agarwal
quelle