it-swarm-tr.com

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

Drupal davranışları bugün hakkında 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.mymodule Ad alanı mı?
  • Drupal davranışına geçirilen bağlam ve ayar parametreleri nelerdir?
  • Bu document.ready() ile eşdeğer mi?
  • Herhangi bir sayıda işlev ekleyebilir miyim?
  • Bir yere çağrılacak JavaScript işlevlerini tanımlayabilir miyim?
53
Hacker

Kısacası, Davranışların document.ready() üzerindeki avantajı, AJAX aracılığıyla yüklenen herhangi bir içeriğe otomatik olarak yeniden uygulanmalarıdır. mymodule, benzersiz olması gereken ad alanınızdır. context sayfanın bunun geçerli olduğu kısmıdır, örneğin bir formun AJAX ile güncellenmiş bir kısmıdır. Birden fazla davranış ekleyebilirsiniz, ancak her biri için benzersiz bir ad (mymodule) kullanmanız gerektiğini düşünüyorum.

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

57
Berdir

Kolayca, Drupal.behaviors, jQuery.ready

DOM hazır olduğunda yalnızca bir kez çalışan jQuery.ready Öğesinin aksine, Drupal.behaviors Sayfa 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ıkladığında daha fazla öğe yüklenir, bu nedenle DOM ilk yüklemeden sonra değişir.

Yeni eklenen öğelere sınıf eklemek istersek ne olur? Burada Drupal Davranışlar işe yarar.

Davranışlar, AJAX istek dahil olmak üzere her istekte yürütülür.

Drupal, DOM yüklendiğinde ve ayrıca Ajax tarafından değiştirildiğinde ekli davranışları çağırır ve iki bağımsız değişkeni iletir

bağlam ve ayarlar

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

settings PHP üzerinden JavaScript'e aktarılan bilgileri içerir, buna Drupal.settings aracılığıyla erişmeye benzer.

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

2
vivek agarwal