Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.01.2015, 20:26
Новичок на форуме
Отправить личное сообщение для ilya_ Посмотреть профиль Найти все сообщения от ilya_
 
Регистрация: 02.05.2012
Сообщений: 9

Как в 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
});


Интересует не то как работать с подвьюхами, а именно работа с моделью!
Является ли хоть один из вариантов верным? Если да/нет то почему? И как бы сделали вы?
Ответить с цитированием
  #2 (permalink)  
Старый 20.01.2015, 06:09
Аспирант
Отправить личное сообщение для biperch Посмотреть профиль Найти все сообщения от biperch
 
Регистрация: 10.07.2013
Сообщений: 34

Я создал один общий вид
и в нем инициализировал бы вид формы и вид вывода данных к примеру
Всем бы бал одну модель и следил бы за ее изменениями к примеру

Я вот смотрю вы в initialize объявляете вид я так понимаю вы его потом хотите вывести. так вот в initialize вывести не получится так как дом не сформирован, вывод надо делать после рендеринга.

Если ваш блок будет выглядеть как на картинке и больше ничего, то можно все сделать в одном виде и форму и все остальное.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
Как организовать RichEdit arma Элементы интерфейса 2 18.02.2010 14:57
О наследовании событий, или как корректно его отменить. JCShen Events/DOM/Window 8 09.02.2010 00:00
Как при наведении на один объект изменять стили других? greysells jQuery 4 06.12.2009 11:00
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20