Использование нескольких моделей и коллекций в представлении Marionette/Backbone

Я не уверен, что здесь правильный подход. Я устанавливаю простую форму. Мне нужно несколько стандартных полей ввода HTML и несколько полей выбора. Данные поступают из нескольких разных источников, и я хотел бы представить модели и коллекции с их данными для представления следующим образом:

Контроллер:

var registerView = new registrationView.RegistrationForm({  
    model: userModel,  
    model2: departmentCollection  
});
myApp.SomeRegion.show(registerView);

Я могу сделать это? Или мне нужно разбить форму на отдельные области, каждая со своей моделью или коллекцией. Если да, то как мне вызвать данные модели в шаблоне. Я не смог заставить его работать до сих пор. Я не могу найти примеры формы со смешанными полями из разных моделей и коллекций,

Большое спасибо

Виттнер


person Wittner    schedule 06.02.2014    source источник


Ответы (1)


Вы можете сделать это, используя составной вид:

var registrationView.RegistrationForm = Marionette.CompositeView({
   // ...
});

var my View = new registrationView.RegistrationForm({  
    model: userModel,  
    collection: departmentCollection  
});

См. https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.compositeview.md и https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview.md (составное представление наследует поведение от представления коллекции).

person David Sulc    schedule 06.02.2014
comment
Спасибо, Дэвид. Я многому научился из вашей отличной книги :-) Однако я не знал, было ли это «излишним» или лучшим способом справиться с этим. Итак, если у меня есть форма с несколькими выбранными входами, правильным шаблоном было бы разделить страницу (возможно, с макетом) и использовать разные области с отдельными представлениями, каждая со своими соответствующими моделями/коллекциями для создания единой формы? - person Wittner; 07.02.2014
comment
Это мое предпочтение: это немного сложнее, но проще в обслуживании. Но вы также можете сделать это в одном представлении, если хотите. В основном все зависит от предпочтений... - person David Sulc; 07.02.2014