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");
Обратите внимание, что вызов методов улучшения для элементов на странице, которая еще не создана / не инициализирована, приведет к ошибке. Однако вы можете обновить виджеты на посещенных / инициализированных страницах.