Backbone/Marionette се опитва да накара 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();

attachView пример на 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