it-swarm.asia

فهم أفضل لسلوك Drupal السلوكيات

قرأت عن Drupal اليوم ، وحاولت كتابة الكود التالي.

(function ($) {

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

}(jQuery));
  • هل Drupal.behaviors.mymodule مساحة الاسم؟
  • ما هي معلمات السياق والإعدادات التي تم تمريرها إلى السلوك Drupal السلوك؟
  • هل هذا يعادل document.ready()؟
  • هل يمكنني إرفاق أي عدد من الوظائف؟
  • هل يمكنني تحديد وظائف JavaScript التي سيتم استدعاؤها في مكان ما؟
53
Hacker

باختصار ، ميزة السلوكيات على document.ready() هي أنه يتم إعادة تطبيقها تلقائيًا على أي محتوى تم تحميله من خلال AJAX. mymodule هي مساحة الاسم الخاصة بك ، والتي يجب أن تكون فريدة. context هو جزء من الصفحة ينطبق عليه ذلك ، على سبيل المثال جزء من نموذج تم تحديثه باستخدام AJAX. يمكنك إرفاق العديد من السلوكيات ، ولكن أعتقد أنك بحاجة إلى استخدام اسم فريد (mymodule) لكل منها.

ألق نظرة على الموارد التالية لمزيد من المعلومات:

57
Berdir

بكلمات سهلة ، Drupal.behaviors طريقة أفضل لتطبيق jQuery.ready

على عكس jQuery.ready التي يتم تشغيلها مرة واحدة فقط عندما يكون DOM جاهزًا ، Drupal.behaviors يمكن تشغيله عدة مرات أثناء تنفيذ الصفحة.

على سبيل المثال ، في طرق العرض اللانهائية ، سيتم تحميل المزيد من العناصر عندما ينقر المستخدم على زر تحميل المزيد ، وبالتالي ، سيتغير DOM بعد التحميل الأولي.

ماذا لو أردنا إضافة فئات إلى العناصر المضافة حديثًا؟ هنا Drupal السلوكيات مفيدة.

سيتم تنفيذ السلوكيات في كل طلب بما في ذلك AJAX.

سيطلق دروبال على السلوكيات المرفقة عند تحميل DOM وأيضًا عندما يتم تغييره بواسطة Ajax ، ويمرر حجتين

السياق و الإعدادات

في المرة الأولى التي يتم فيها استدعاء Drupal.attachBehaviors () ، يحتوي المتغير السياق على كائن المستند الذي يمثل DOM ، ولكن بالنسبة لبقية سياق المكالمات سيحتوي على الجزء المتأثر من HTML.

الإعدادات يحتوي على معلومات تم تمريرها إلى JavaScript عبر PHP ، فهي مشابهة للوصول إليها عبر Drupal.settings.

علاوة على ذلك ، يمكن للوحدات النمطية استدعاء Drupal.attachBehaviors () أيضًا.

2
vivek agarwal