Drupal 행동에 대한 이해


51

오늘 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 함수를 정의 할 수 있습니까?

: Lullabot에서이 블로그 게시물 JS 행동 주위의 개념을 설명하는 좋은 직장 않습니다 lullabot.com/articles/...
스티브 Persch을

답변:


56

요컨대, Behaviors의 장점은 document.ready()AJAX를 통해로드 된 모든 컨텐츠에 자동으로 다시 적용된다는 것입니다. mymodule네임 스페이스는 고유해야합니다. context이 내용이 적용되는 페이지의 일부입니다 (예 : AJAX로 업데이트 된 양식의 일부). 여러 동작을 연결할 수 있지만 각 동작마다 고유 한 이름 (mymodule)을 사용해야한다고 생각합니다.

자세한 내용은 다음 자료를 참조하십시오.


2

쉬운 말로, Drupal.behaviors구현하는 더 좋은 방법입니다jQuery.ready

jQuery.readyDOM이 준비되었을 때 한 번만 실행되는 것과 달리 Drupal.behaviors페이지 실행 중에 여러 번 실행될 수 있습니다.

예를 들어, 무한 스크롤보기에서는 사용자가 추가로드 버튼을 클릭하면 더 많은 요소가로드되므로 초기로드 후 DOM이 변경됩니다.

새로 추가 된 요소에 클래스를 추가하려면 어떻게해야합니까? Drupal Behaviors가 유용합니다.

AJAX 요청을 포함한 모든 요청에서 동작이 실행됩니다.

Drupal은 DOM이로드 될 때와 Ajax에 의해 변경 될 때 첨부 된 동작을 호출하여 두 개의 인수를 전달합니다.

상황설정

Drupal.attachBehaviors ()를 처음 호출하면 컨텍스트 변수에 DOM을 나타내는 문서 객체가 포함되지만 나머지 호출에 대해서는 영향을받는 HTML 부분이 유지됩니다.

설정 에는 PHP를 통해 JavaScript로 전달되는 정보가 포함되며 Drupal.settings를 통해 정보에 액세스하는 것과 유사합니다.

또한 모듈은 Drupal.attachBehaviors ()를 호출 할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.