Pemahaman yang lebih baik tentang perilaku Drupal

51

Saya membaca tentang perilaku Drupal hari ini, dan saya mencoba menulis kode berikut.

(function ($) {

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

}(jQuery));
  • Apakah Drupal.behaviors.mymodulenamespace itu?
  • Apa parameter konteks dan pengaturan yang diteruskan ke perilaku Drupal?
  • Apakah ini setara dengan document.ready()?
  • Bisakah saya melampirkan sejumlah fungsi?
  • Bisakah saya mendefinisikan fungsi JavaScript yang akan dipanggil di suatu tempat?
Peretas
sumber
Posting blog ini dari Lullabot sangat membantu menjelaskan konsep seputar perilaku JS: lullabot.com/articles/…
Steve Persch

Jawaban:

56

Singkatnya, kelebihan Behaviors over document.ready()adalah bahwa mereka secara otomatis diterapkan kembali ke konten apa pun yang dimuat melalui AJAX. mymoduleadalah namespace Anda, yang harus unik. contextadalah bagian dari halaman yang berlaku, misalnya bagian dari formulir yang telah diperbarui dengan AJAX. Anda dapat melampirkan banyak perilaku, tetapi saya pikir Anda perlu menggunakan nama unik (modul saya) untuk masing-masing perilaku tersebut.

Lihat sumber daya berikut untuk informasi lebih lanjut:

Berdir
sumber
2

Dengan kata mudah, Drupal.behaviorsadalah cara yang lebih baik untuk diterapkanjQuery.ready

Berbeda dengan jQuery.readyyang hanya berjalan satu kali ketika DOM siap, Drupal.behaviorsdapat dijalankan beberapa kali selama eksekusi halaman.

Misalnya, dalam tampilan gulir tak terbatas, lebih banyak elemen akan dimuat ketika pengguna mengklik tombol lebih banyak, karenanya, DOM akan berubah setelah pemuatan awal.

Bagaimana jika kita ingin menambahkan kelas ke elemen yang baru ditambahkan? Di sini Perilaku Drupal berguna.

Perilaku akan dieksekusi pada setiap permintaan termasuk permintaan AJAX.

Drupal akan memanggil perilaku terlampir saat DOM dimuat dan juga ketika diubah oleh Ajax, melewati dua argumen

konteks dan pengaturan

Pertama kali Drupal.attachBehaviors () dipanggil, variabel konteks berisi objek dokumen yang mewakili DOM, tetapi untuk konteks panggilan lainnya akan menampung bagian HTML yang terpengaruh.

pengaturan berisi informasi yang diteruskan ke JavaScript melalui PHP, ini mirip dengan mengaksesnya melalui Drupal.settings.

Selanjutnya, modul dapat memanggil Drupal.attachBehaviors () juga.

vivek agarwal
sumber