Как выбрать между _init и _create в виджете jQuery UI?
-
14-10-2019 - |
Вопрос
Я думаю, я понимаю разницу между _create
а также _init
в определениях виджетов (см. Например этот вопрос), но я все еще не уверен в цель для различия. Какие виды задач настройки вступают в _create()
или в _init()
? Что идет не так, если автор виджета выбирает неправильный?
Решение
Из:
- http://forum.jquery.com/topic/jquery-ui-1-8-use-of-init
- http://www.erichynds.com/jquery/tips-for-developing-jquery-ui-widgets/
- http://jqueryui.com/demos/dialog/
Использовать
_create
Для создания и введения разметки, связывания событий и т. Д. Поместите функциональность по умолчанию в_init()
Анкет Виджет диалога, например, предоставляетautoOpen
Параметр, обозначающий, должен ли диалог быть открытым после инициализации виджет; Идеальное место для_init()
!
Также:
Фабрика виджетов автоматически запускает
_create()
а также_init()
Методы во время инициализации, в этом порядке. На первый взгляд кажется, что усилия дублируются, но между ними существует разница в зрелище. Потому что фабрика виджетов защищает от нескольких экземпляров на одном и том же элементе,_create()
будет называться максимум один раз для каждого экземпляра виджета, тогда как_init()
будет вызывать каждый раз, когда виджет вызывается без аргументов ...
Если автор использует _init()
когда _create()
должен был быть закодирован, результатом будет то, что код в _init()
будет выполнено после экземпляра на виджет.
Другие советы
Короткий ответ Здесь: _create () будет выполняться при запуска плагина jquery-ui в первый раз, например, $ xx.your-plugin (ваши параметры); _init () будет выполнен сначала и после первого раза Когда ваш код запускается в $ xx.your-plugin (ваши параметры);
Как есть какой-то код в jQuery-ui.custom.js
var instance = $.data( this, fullName );
if ( instance ) {
instance.option( options || {} )._init();
}
Итак, если вы Нарисуйте диаграмму с плагином jquery-ui после его вытянутого Используйте новые данные, чтобы обновить его, вам нужно сделать это в _init (), чтобы обновить свою диаграмму. Если вы просто что -то отобразите и не будете обновлять их полностью, _create () удовлетворит ваши потребности.