Drupal davranışlarının daha iyi anlaşılması


51

Bugün Drupal davranışlarını okudum ve aşağıdaki kodu yazmaya çalıştım.

(function ($) {

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

}(jQuery));
  • Drupal.behaviors.mymodulead?
  • Drupal davranışına iletilen bağlam ve ayar parametreleri nelerdir?
  • Bu eşdeğer document.ready()mi?
  • Herhangi bir sayıda işlevi ekleyebilir miyim?
  • Bir yere çağrılacak JavaScript fonksiyonlarını tanımlayabilir miyim?

Lullabot'un bu blog yazısı, JS davranışları hakkındaki kavramları açıklamada harika bir iş çıkarıyor: lullabot.com/articles/…
Steve Persch

Yanıtlar:


56

Kısacası, Davranışların avantajı, document.ready()AJAX aracılığıyla yüklenen herhangi bir içeriğe otomatik olarak yeniden uygulanmalarıdır. mymodulebenzersiz olması gereken ad alanınızdır. contextÖrneğin, bu sayfanın uygulandığı, örneğin AJAX ile güncellenmiş bir formun parçası. Birden fazla davranış ekleyebilirsiniz, ancak bunların her biri için benzersiz bir ad kullanmanız gerektiğini düşünüyorum.

Daha fazla bilgi için aşağıdaki kaynaklara göz atın:


2

Kolayca söylemek gerekirse, Drupal.behaviorsuygulamak için daha iyi bir yoldurjQuery.ready

jQuery.readyDOM hazır olduğunda hangisinin yalnızca bir kez çalıştığından farklı olarak , Drupal.behaviorssayfa yürütme sırasında birden çok kez çalıştırılabilir.

Örneğin, sonsuz kaydırma görünümlerinde, kullanıcı daha fazla yükle düğmesini tıklattığında daha fazla öğe yüklenecek, bu nedenle DOM ilk yüklemeden sonra değişecektir.

Yeni eklenen öğelere sınıf eklemek istiyorsak ne olur? İşte Drupal Davranışları kullanışlı.

Davranışlar, AJAX istekleri de dahil olmak üzere her istek üzerinde gerçekleştirilecektir.

Drupal, DOM yüklendiğinde ve ayrıca Ajax tarafından değiştirildiğinde, iki argüman ileterek eklenen davranışları arayacak

bağlam ve ayarlar

Drupal.attachBehaviors () adı ilk kez çağrıldığında, bağlam değişkeni DOM'yi temsil eden belge nesnesini içerir, ancak çağrılar bağlamının geri kalanında etkilenen HTML parçasını tutar.

ayarları PHP üzerinden JavaScript'e aktarılan bilgileri içerir, buna Drupal.settings yoluyla erişmeye benzer.

Ayrıca, modüller Drupal.attachBehaviors () öğesini de çağırabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.