Hiểu rõ hơn về hành vi của Drupal


51

Tôi đã đọc về các hành vi của Drupal ngày hôm nay và tôi đã thử viết đoạn mã sau.

(function ($) {

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

}(jQuery));
  • Drupal.behaviors.mymodulekhông gian tên?
  • Các tham số bối cảnh và cài đặt được truyền cho hành vi Drupal là gì?
  • Đây có phải là tương đương với document.ready()?
  • Tôi có thể đính kèm bất kỳ số lượng chức năng?
  • Tôi có thể định nghĩa các hàm JavaScript sẽ được gọi ở đâu đó không?

Bài đăng trên blog này từ Lullabot thực hiện rất tốt việc giải thích các khái niệm xung quanh các hành vi của JS: lullabot.com/articles/ Kẻ
Steve Persch

Câu trả lời:


56

Nói tóm lại, ưu điểm của Behaviors document.ready()là chúng được tự động áp dụng lại cho bất kỳ nội dung nào được tải thông qua AJAX. mymodulelà không gian tên của bạn, cần phải là duy nhất. contextlà một phần của trang áp dụng điều này, ví dụ như một phần của biểu mẫu đã được cập nhật với AJAX. Bạn có thể đính kèm nhiều hành vi, nhưng tôi nghĩ bạn cần sử dụng một tên duy nhất (mymodule) cho mỗi hành vi đó.

Hãy xem các tài nguyên sau để biết thêm thông tin:


2

Nói một cách dễ dàng, Drupal.behaviorslà một cách tốt hơn để thực hiệnjQuery.ready

Không giống như jQuery.readychỉ chạy một lần khi DOM sẵn sàng, Drupal.behaviorscó thể được chạy nhiều lần trong khi thực hiện trang.

Ví dụ: trong chế độ xem cuộn vô hạn, nhiều phần tử sẽ được tải khi người dùng nhấp vào nút tải thêm, do đó, DOM sẽ thay đổi sau khi tải ban đầu.

Điều gì xảy ra nếu chúng ta muốn thêm các lớp vào các phần tử mới được thêm vào? Ở đây hành vi Drupal có ích.

Các hành vi sẽ được thực hiện trên mọi yêu cầu bao gồm các yêu cầu AJAX.

Drupal sẽ gọi các hành vi đính kèm khi DOM được tải và cả khi nó được Ajax thay đổi, chuyển qua hai đối số

bối cảnhcài đặt

Lần đầu tiên Drupal.attachBehaviors () được gọi, biến bối cảnh chứa đối tượng tài liệu đại diện cho DOM, nhưng trong phần còn lại của bối cảnh cuộc gọi sẽ giữ phần HTML bị ảnh hưởng.

cài đặt chứa thông tin được truyền vào JavaScript thông qua PHP, nó tương tự như truy cập thông qua Drupal.sinstall.

Hơn nữa, các mô-đun có thể gọi Drupal.attachBehaviors () là tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.