jQuery Mobile ListView в диалоговом окне не инициализируется

Я динамически создаю диалог, который содержит список и добавляю его в body когда пользователь переходит к определенному data-role=page, После добавления диалога body Я звоню

$('#myDialog').dialog();
$('#myList', '#myDialog').listview();

Когда я звоню listview() Функция я получаю следующую ошибку:

Uncaught TypeError: Cannot read property 'jQuery19105852627926506102' of undefined

Единственный способ, которым я смог инициализировать свой просмотр списка, это сделать во время pageshow событие диалога, но затем пользователь фактически видит элементы списка без стилизации, пока listview() Функция завершена.

Есть ли способ, которым я могу инициализировать просмотр списка в диалоге, прежде чем диалог был показан?

Обновление: я получаю ту же ошибку, если использую `$('#myDialog'). Trigger('create').

1 ответ

Решение

Диалоги обрабатываются так же, как страницы. При динамическом добавлении страницы / диалога в DOM вам не нужно вызывать какие-либо улучшения, так как они инициализируются, а также все виджеты внутри, перед их отображением.

Все, что вам нужно, это добавить диалог к <body> или же $.mobile.pageContainer а затем откройте диалог, используя $.mobile.changePage(),

$.mobile.pageContainer.append("dialog HTML markup");
$.mobile.changePage("#dialog_ID");

Обратите внимание, что вызов методов улучшения для элементов на странице, которая еще не создана / не инициализирована, приведет к ошибке. Однако вы можете обновить виджеты на посещенных / инициализированных страницах.

демонстрация

Другие вопросы по тегам