Краще розуміння поведінки Друпала


51

Я читав про поведінку Друпала сьогодні, і спробував написати наступний код.

(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, які будуть називатися десь?

Ця публікація в блозі від Lullabot робить чудову роботу з пояснення понять навколо поведінки JS: lullabot.com/articles/…
Стів Перш,

Відповіді:


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.attachBehaviors (), змінна контексту містить об'єкт документа, що представляє DOM, але для решти контексту викликів міститиме фрагмент HTML, що стосується.

налаштування містить інформацію, передану в JavaScript через PHP, вона аналогічна доступу до неї через Drupal.settings.

Крім того, модулі можуть також викликати Drupal.attachBehaviors ().

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.