Как в Backbone изменять модель в подвью?
Всем привет. Как правильно работать с моделью когда во вью есть подвьюхи. Вот что я имею ввиду:
У меня компонент, пускай это будет какой-то абстрактная голосовалка. Она состоит из счетчика и формы для комментария. Вот условная картинка: Я хочу вынести форму в отдельную вью. var VoteForm = Backbone.View.extend({ }); var Vote = Backbone.View.extend({ initialize: function () { this.form = new VoteForm(); } }); В модели голосовалки есть два поля count и comment var VoteModel = Backbone.Model.extend({ defaults: { count: 0, comment: '' } }); Далее, я хочу, что бы при сабмите формы изменялась модель. Т.е. в comment попало то, что введено в форму. Вопрос в том как мне взаимодействовать с моделью. У меня есть только два варианта. Первый это передавать модель в подвью. var VoteForm = Backbone.View.extend({ events: { 'submit': function () { this.model.save({comment: this.commentValue}) // this.commentValue - это то что введено в форму } } }); var Vote = Backbone.View.extend({ initialize: function () { this.form = new VoteForm({ model: this.model }); } }); var vote = new Vote({ model: new VoteModel }); Второй это подписываться на события подвью и в колбэке изменять модель var VoteForm = Backbone.View.extend({ events: { 'submit': function () { this.trigger('submit', {comment: this.commentValue}) // this.commentValue - это то что введено в форму } } }); var Vote = Backbone.View.extend({ initialize: function () { this.form = new VoteForm(); this.form.on('submit', function (data) { this.model.save({ comment. data.comment }) }); } }); var vote = new Vote({ model: new VoteModel }); Интересует не то как работать с подвьюхами, а именно работа с моделью! Является ли хоть один из вариантов верным? Если да/нет то почему? И как бы сделали вы? |
Я создал один общий вид
и в нем инициализировал бы вид формы и вид вывода данных к примеру Всем бы бал одну модель и следил бы за ее изменениями к примеру Я вот смотрю вы в initialize объявляете вид я так понимаю вы его потом хотите вывести. так вот в initialize вывести не получится так как дом не сформирован, вывод надо делать после рендеринга. Если ваш блок будет выглядеть как на картинке и больше ничего, то можно все сделать в одном виде и форму и все остальное. |
Часовой пояс GMT +3, время: 14:10. |