Spec-Zone.ru › jQuery UI

Мост плагина виджета

jQuery.widget.bridge( name, constructor )

Описание: Часть jQuery Widget Factory — это метод jQuery.widget.bridge(). Он выступает в роли посредника между объектом, созданным $.widget(), и jQuery API.

  • jQuery.widget.bridge( name, constructor )

    • name
      Тип: Строка
      Название плагина для создания.
    • constructor
      Тип: Функция()
      Объект для инстанцирования при вызове плагина.

$.widget.bridge() выполняет несколько действий:

  • Подключает обычный JavaScript-конструктор к jQuery API.
  • Автоматически создает экземпляры указанного объекта и хранит их в кэше элемента $.data.
  • Разрешает вызовы публичных методов.
  • Запрещает вызовы приватных методов.
  • Запрещает вызовы методов на неинициализированных объектах.
  • Защищает от множественной инициализации.

Виджеты jQuery UI создаются с помощью синтаксиса $.widget( "foo.bar", {} );, чтобы определить объект, из которого будут создаваться экземпляры. При наличии пяти .foo в структуре DOM, $( ".foo" ).bar(); создаст пять экземпляров вашего объекта "bar". $.widget.bridge() работает внутри фабрики, беря ваш базовый объект "bar" и предоставляя ему публичный API. Таким образом, вы можете создавать экземпляры, написав $( ".foo" ).bar(), и вызывать методы, написав $( ".foo" ).bar( "baz" ).

Если вам нужен только однократный вызов инициализации и вызов методов, ваш объект, переданный jQuery.widget.bridge(), может быть очень минимальным:

var Highlighter = function( options, element ) {
  this.options = options;
  this.element = $( element );
  this._set( 800 );
};
Highlighter.prototype = {
  toggle: function() {
    this._set( this.element.css( "font-weight") === 400 ? 800 : 400 );
  },
  _set: function(value) {
    this.element.css( "font-weight", value );
  }
};

Всё, что вам нужно здесь — функция, которая действует как конструктор, принимающая два аргумента:

  • options: объект с параметрами конфигурации
  • element: элемент DOM, на котором был создан этот экземпляр

Затем вы можете подключить этот объект в качестве jQuery-плагина, используя мост, и использовать его с любым jQuery-объектом:

// Hook up the plugin
$.widget.bridge( "colorToggle", Highlighter );
 
// Initialize it on divs
$( "div" ).colorToggle().click(function() {
  // Call the public method on click
  $( this ).colorToggle( "toggle" );
});

Чтобы использовать все функции моста, вашему объекту также нужен метод _init() в прототипе. Он будет вызываться всякий раз, когда плагин вызывается, когда экземпляр уже существует. В этом случае вам также нужен метод option(). Он будет вызван с параметрами в качестве первого аргумента. Если их не было, аргументом будет пустой объект. Для правильной реализации метода option, ознакомьтесь с реализацией $.Widget.

Есть один необязательный параметр, который мост будет использовать, если он присутствует: если у прототипа вашего объекта есть свойство widgetFullName, оно будет использоваться в качестве ключа для хранения и извлечения экземпляра. В противном случае будет использовано имя параметра.

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jqueryui.com/jQuery.widget.bridge

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API