Магистраль/марионетка, пытающаяся заставить attachView работать

У меня есть этот Fiddle, который иллюстрирует мою проблему. Я почти уверен, что настроил его правильно, но я продолжаю видеть, что Marionette не отображает вид.

var aApp = new Marionette.Application();

vTestSetup = Marionette.ItemView.extend({
    template: "#tmplTest"
});

var testView = new vTestSetup();

aApp.addRegions({
    appRegion: "#dApp"
});

aApp.appRegion.attachView(testView);
aApp.appRegion.show(testView);

aApp.start();

прикрепить пример просмотра на JSFiddle


person veector    schedule 10.10.2013    source источник
comment
Ваш JSFiddle ищет шаблон не в том элементе. Должно быть #sample-template, а не #tmplTest. Однако после того, как это будет исправлено, неясно, в чем ваша проблема. Если вы проверите свою консоль, вы получите ошибку Uncaught ReferenceError: contentPlacement is not defined. vTestSetup() модель? Если да, пожалуйста, опубликуйте его определение. Он также не определен в вашем JSFiddle   -  person Bojangles    schedule 10.10.2013
comment
TL;DR: ваш JSFiddle неполный. Пожалуйста, заполните его   -  person Bojangles    schedule 10.10.2013
comment
Извините, должно быть завершено сейчас.   -  person veector    schedule 10.10.2013
comment
Удаление строки aApp.appRegion.attachView(testview); улучшит отображение вашего шаблона. Вам не нужно attachView(), если вы делаете show()   -  person Bojangles    schedule 10.10.2013
comment
Вы правы, мой вопрос не обязательно в том, как заставить представление отображаться, а в том, почему существует attachView, если он не может работать, как указано выше. У меня есть более сложное приложение, к которому я хотел бы прикрепить представления, которые могут отображаться позже. Я все еще пытаюсь понять, как должен работать attachView.   -  person veector    schedule 10.10.2013
comment
stackoverflow.com/questions/18117082/   -  person veector    schedule 10.10.2013


Ответы (1)


По сути, вы используете attachView в том случае, когда HTML уже присутствует на странице и вы хотите добавить к нему поведение, управляемое Backbone. Все, что вам нужно сделать, это:

  1. Укажите атрибут el, указывающий селектор, содержащий представление HTML
  2. создать экземпляр представления
  3. прикрепить вид к региону

Вы можете увидеть практический пример в одном из моих сообщений в блоге (ищите attachView): http://davidsulc.com/blog/2012/05/06/tutorial-a-full-backbone-marionette-application-part-1/

person David Sulc    schedule 11.10.2013
comment
HTML-код из представления перемещается (или копируется) в контейнер региона? - person veector; 11.10.2013
comment
Нет, HTML не трогается (он уже должен присутствовать в нужном месте). События Javascript, относящиеся к представлению, просто прикрепляются к существующему HTML. - person David Sulc; 12.10.2013