Переключение с одного региона на другой в Marionette, представления не отображаются правильно
Я работаю с Marionette
и у меня есть следующая проблема.
initialize
макет загружает два вида в двух областях моего макета. Скажем ViewA
и ViewB
. Внутри ViewA
запускается событие. Событие потребляется макетом для переключения и вводятся два других вида. Скажем ViewC
и ViewD
.
Всякий раз, когда переключение выполняется, ViewC
и ViewD
не имеют того же стиля (также css), который я применил к ним. В частности, jQuery Мобильные стили не применяются. Какой-нибудь совет?
Вот некоторый код, где комментарии выделяют важные части.
onConfirm : function() {
this.leftView = new ViewC();
this.rightView = new ViewD();
this.leftRegion.show(this.leftView);
this.rightRegion.show(this.rightView);
// FIX calling trigger('create') seems fix the problem. Why? Is this correct?
this.$el.trigger('create');
},
initialize : function() {
// listen for event triggered from ViewA
// e.g. GloabalAggregator.vent.trigger("ga:confirm");
// where "ga:confirm" is a simple string
GloabalAggregator.vent.on("ga:confirm" , this.onConfirm, this);
this.leftView = new ViewA(), // creating here a new ViewC the style is applied correctly
this.rightView = new ViewB(); // creating here a new ViewD the style is applied correctly
},
onRender : function () {
this.leftRegion.show(this.leftView);
this.rightRegion.show(this.rightView);
}
EDIT
Вызов trigger('create')
, кажется, решил проблему. Почему? Это правильно?
1 ответ:
Когда вы добавляете новый html на страницу (Добавить новый визуализированный вид, поменять вид на какой-то другой вид и т. д..), вы должны сообщить об этом jQuery mobile.
Событие"create"используется для улучшения "сырого" html с помощью мобильных виджетов jQuery. Более подробную информацию можно найти здесь: http://jquerymobile.com/demos/1.0/docs/pages/page-scripting.html Найдите раздел "улучшение новой разметки".