У меня есть приложение марионеток с базовой сетью с маршрутизатором и контроллером. В моем приложении вы можете просмотреть коллекцию текстов (индексный маршрут с извлечением коллекции с сервера), просмотреть существующую коллекцию текстов (маршрут indexPage без выборки с сервера) и создать новый текст (маршрут формы). Виды текстов списков и форма создания отличаются друг от друга и изменениями в регионе.Каков наилучший способ добавления модели в коллекцию из представления?
Я хочу добавить успешно сохраненную модель в коллекцию, а затем перенаправить на маршрут indexPage, но каков наилучший способ получить коллекцию текстов из обратного вызова с успешным обращением _FormView? Или как изменить приложение, чтобы сделать его простым?
Я могу отправить событие контроллеру с Backbone.Radio, но хочу иметь дело без него.
Маршруты
router.processAppRoutes(controller, {
'': 'index',
'index': 'indexPage',
'create': 'form'
});
Контроллер
_Controller = Marionette.Controller.extend({
initialize: function() {
this.list = new _MainTexts();
},
index: function() {
if (!_.size(this.list)) {
var
self = this;
this.list.fetch({
success: function (collection, response, options) {
self.indexPage();
return;
}
});
}
this.indexPage();
},
indexPage: function() {
var
textsView = new _TextsView({
collection: this.list
});
application.getRegion('contentRegion').show(textsView);
},
form: function() {
var
formView = new _FormView({
model: new _MainText()
});
application.getRegion('contentRegion').show(formView);
}
});
Просмотров
_TextView = Marionette.ItemView.extend({
className: 'item text',
template: function (serialized_model) {
return _.template('<p><%= texts[0].text %></p>')(serialized_model);
}
});
_TextsView = Marionette.CollectionView.extend({
className: 'clearfix',
childView: _TextView
});
вид Форма
_FormView = Marionette.ItemView.extend({
template: '#form-template',
ui: {
text: 'textarea[name="text"]',
submit: 'button[type="submit"]'
},
events: {
'click @ui.submit': 'submitForm'
},
submitForm: function (event) {
event.preventDefault();
this.model.set({
text: this.ui.text.val()
});
this.model.save({}, {
success: function (model, response, options) {
???
}
});
}
});
«* можно просмотреть существующую коллекцию текстов (indexPage маршрут без выбор из сервера) и может создать новый текст (маршрут формы) "* ... Я не уверен, являются ли эти вопросы или заявления ... *" Представления текстов списков и формы создания отличаются друг от друга и изменения регион. "* список текстов ... создать форму ... Я понятия не имею, что это такое. Не могли бы вы прочитать этот вопрос с точки зрения человека, который не имеет представления о вашем заявлении и переформулирует вопрос соответственно? .. –
@TJ Хорошо, возможно, я поставил вопрос несколько хаотично, но я уже нашел решение. Опубликовать решение немного позже. – Evgeniy
Примечание: «Объект Controller устарел. Вместо использования класса Controller с AppRouter вы должны указать свои обратные вызовы на простом объекте Javascript или объекте Marionette« - http://marionettejs.com/docs/v2. 4.4/marionette.controller.html – misantronic