Добавление модели в родительское представление из дочернего представления

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

В моем родительском представлении я отображаю дочерний вид следующим образом:

    renderEngineOptions: function () {
        var view = new EngineOptionsView({ model: this.model });
        this.$('.engineOptions').append(view.render().el);
    },

В моем дочернем представлении (engineOptionsView) я определяю родителя как this.engine в методе initialize:

    initialize: function (args) {
        this.engine = args.model;
    }

Затем у меня есть кнопка HTML, которая при нажатии запускает это событие:

    addTurbo: function() {
        this.$('.turboOption').show();
        this.engine.turbo = new Turbo();
    }

Turbo - это новая модель, которую я пытаюсь добавить в двигатель. Но ничего не происходит. Я не получаю ошибку в консоли, но когда я записываю модель двигателя в консоли, турбо никогда не добавлялось.

Как я могу добавить турбо модель к родителю, от ребенка?

Спасибо!

1 ответ

Решение

Когда вы передаете модель с model опция, вид автоматически применяет его к себе, так что он доступен через this.model непосредственно.

var view = new EngineOptionsView({ model: this.model });

у ребенка:

initialize: function (args) {
    this.engine = args.model; // not necessary
    console.log(this.model === this.engine); // same thing
}

Вы добавляете turbo как свойство модели

this.engine.turbo = new Turbo();

Так что если вы хотите получить turbo от родителя:

this.model.turbo;

Если вы хотите добавить turbo как атрибут модели из дочернего представления:

this.model.set('turbo', new Turbo());

И чтобы получить это от родителей:

this.model.get('turbo);

Без подробностей трудно догадаться, откуда возникла проблема.

Другие вопросы по тегам