Ответы выше, включающие использование $(currentPage).trigger('create');
, решают проблему, но поскольку исправление применяется впоследствии (после того, как страница представления была отображена и отображена $.mobile.changePage()
), пользователь получает неприятный побочный эффект: просмотр мерцаний из-за изменения стиля, примененного jquery mobile.
Мое решение проблемы состояло в том, чтобы вызвать пользовательское событие из представления после завершения динамического рендеринга и связать $.mobile.changePage()
с этим событием. Это приводит к тому, что вывод будет «буферизован» до завершения, а затем полностью стилизован.
Вот пример:
В функции initialize
моего представления у меня есть код, ожидающий события, которое будет запущено моделью / коллекцией при получении, и функция для отображения динамической части html:
window.MyView = Backbone.View.extend({
// some other code here
initialize: function() {
this.listenTo(this.collection, "fetchCompleted:CollectionName", this.renderRows);
},
renderRows: function (eventName) {
$(this.el).find('div[class="content-primary"]').html(this.template_ul({data: this.collection}));
this.trigger( 'view:ready' );
},
//...
... тогда в роутере у меня есть следующий код для changePage()
:
myViewObject.on( 'view:ready', function() {
$.mobile.changePage($(next.el), {changeHash:false, transition: transition});
});