ความเข้าใจที่ดีขึ้นของพฤติกรรม Drupal


51

ฉันอ่านเกี่ยวกับพฤติกรรม Drupal วันนี้และฉันพยายามเขียนรหัสต่อไปนี้

(function ($) {

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

}(jQuery));
  • คือDrupal.behaviors.mymodulenamespace หรือไม่
  • พารามิเตอร์บริบทและการตั้งค่าส่งผ่านไปยังลักษณะการทำงานของ Drupal คืออะไร
  • สิ่งนี้เทียบเท่าdocument.ready()หรือไม่
  • ฉันสามารถแนบฟังก์ชั่นจำนวนเท่าใดก็ได้?
  • ฉันสามารถกำหนดฟังก์ชั่นจาวาสคริปต์ที่จะถูกเรียกได้ที่ไหน?

โพสต์บล็อกนี้จาก Lullabot ทำงานได้ดีในการอธิบายแนวคิดเกี่ยวกับพฤติกรรมของ JS: lullabot.com/articles/ …
Steve Persch

คำตอบ:


56

กล่าวโดยย่อข้อดีของพฤติกรรมdocument.ready()คือพวกเขาจะถูกนำไปใช้กับเนื้อหาใด ๆ ที่โหลดผ่าน AJAX โดยอัตโนมัติ mymoduleคือเนมสเปซของคุณซึ่งต้องไม่ซ้ำกัน contextเป็นส่วนหนึ่งของหน้าเว็บที่ใช้สิ่งนี้ตัวอย่างเช่นส่วนหนึ่งของฟอร์มที่ได้รับการอัพเดตด้วย AJAX คุณสามารถแนบหลายพฤติกรรม แต่ฉันคิดว่าคุณต้องใช้ชื่อที่ไม่ซ้ำกัน (mymodule) สำหรับแต่ละเหล่านั้น

ดูที่แหล่งข้อมูลต่อไปนี้สำหรับข้อมูลเพิ่มเติม:


2

ในคำง่าย ๆDrupal.behaviorsเป็นวิธีที่ดีกว่าที่จะใช้jQuery.ready

ซึ่งแตกต่างจากjQuery.readyที่ทำงานเพียงครั้งเดียวเมื่อ DOM พร้อมDrupal.behaviorsสามารถวิ่งได้หลายครั้งในระหว่างการดำเนินการหน้า

ตัวอย่างเช่นในมุมมองการเลื่อนแบบไม่สิ้นสุดองค์ประกอบเพิ่มเติมจะถูกโหลดเมื่อผู้ใช้คลิกปุ่มโหลดเพิ่มเติมดังนั้น DOM จะเปลี่ยนไปหลังจากการโหลดครั้งแรก

ถ้าเราต้องการเพิ่มคลาสให้กับองค์ประกอบที่เพิ่มใหม่ ที่นี่พฤติกรรมของ Drupal มีประโยชน์มาก

พฤติกรรมจะถูกดำเนินการในทุกคำขอรวมถึงคำขอ AJAX

Drupal จะเรียกใช้ลักษณะการทำงานที่แนบมาเมื่อโหลด DOM แล้วและเมื่อ Ajax เปลี่ยนไปมันจะส่งผ่านอาร์กิวเมนต์สองข้อ

บริบทและการตั้งค่า

ครั้งแรกที่เรียกว่า Drupal.attachBeh พฤติกรรม () ตัวแปรบริบทมีวัตถุเอกสารที่เป็นตัวแทนของ DOM แต่สำหรับส่วนที่เหลือของบริบทการโทรจะถือชิ้นส่วนของ HTML ที่ได้รับผลกระทบ

การตั้งค่าประกอบด้วยข้อมูลที่ส่งผ่านไปยัง JavaScript ผ่านทาง PHP ซึ่งคล้ายกับการเข้าถึงผ่านทาง Drupal.settings

นอกจากนี้โมดูลอาจเรียก Drupal.attachBeh พฤติกรรม () เช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.