Migliore comprensione dei comportamenti Drupal


51

Ho letto dei comportamenti di Drupal oggi e ho provato a scrivere il seguente codice.

(function ($) {

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

}(jQuery));
  • È Drupal.behaviors.mymodulelo spazio dei nomi?
  • Quali sono i parametri di contesto e impostazioni passati al comportamento Drupal?
  • È questo l'equivalente di document.ready()?
  • Posso allegare un numero qualsiasi di funzioni?
  • Posso definire funzioni JavaScript che verranno chiamate da qualche parte?

Questo post sul blog di Lullabot fa un ottimo lavoro nel spiegare i concetti relativi ai comportamenti di JS: lullabot.com/articles/…
Steve Persch,

Risposte:


56

In breve, il vantaggio di Behaviors document.ready()è che vengono automaticamente riapplicati a qualsiasi contenuto caricato tramite AJAX. mymoduleè il tuo spazio dei nomi, che deve essere unico. contextè la parte della pagina a cui si applica, ad esempio una parte di un modulo che è stato aggiornato con AJAX. È possibile associare più comportamenti, ma penso che sia necessario utilizzare un nome univoco (mymodule) per ognuno di questi.

Dai un'occhiata alle seguenti risorse per ulteriori informazioni:


2

In parole semplici, Drupal.behaviorsè un modo migliore per implementarejQuery.ready

A differenza del jQuery.readyquale viene eseguito una sola volta quando il DOM è pronto, Drupal.behaviorspuò essere eseguito più volte durante l'esecuzione della pagina.

Ad esempio, nelle viste a scorrimento infinito, verranno caricati più elementi quando l'utente fa clic su carica più pulsante, quindi DOM cambierà dopo il caricamento iniziale.

E se vogliamo aggiungere classi agli elementi appena aggiunti? Qui i comportamenti di Drupal sono utili.

I comportamenti verranno eseguiti su ogni richiesta, comprese le richieste AJAX.

Drupal chiamerà comportamenti associati quando il DOM viene caricato e anche quando viene modificato da Ajax, passando due argomenti

contesto e impostazioni

La prima volta che viene chiamato Drupal.attachBehaviors (), la variabile di contesto contiene l'oggetto documento che rappresenta il DOM, ma per il resto delle chiamate il contesto conterrà l'elemento HTML interessato.

le impostazioni contengono informazioni passate a JavaScript tramite PHP, è simile all'accesso tramite Drupal.settings.

Inoltre, i moduli possono anche chiamare Drupal.attachBehaviors ().

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.