从子视图向父视图添加模型

Adding a model to a parent view from a child view

我正在尝试从子视图向父视图添加新模型。

在我的父视图中,我这样渲染子视图:

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

在我的子视图(engineOptionsView)中,我在初始化方法中将父视图定义为 'this.engine':

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

然后我有一个 html 按钮,单击该按钮会触发此事件:

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

Turbo 是我尝试添加到引擎中的新模型。但是没有任何反应。我在控制台中没有收到任何错误,但是当我在控制台中写出引擎模型时,没有添加涡轮。

如何将涡轮模型从子项添加到父项?

谢谢!

当您使用 model 选项传递模型时,视图会自动将其应用到自身,因此可以直接通过 this.model 使用。

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

在child:

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

您正在添加 turbo 作为模型的 属性

this.engine.turbo = new Turbo();

因此,如果您想从 parent 中获取 turbo

this.model.turbo;

如果要从 child 视图添加 turbo 作为模型的属性:

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

并从 parent 获取它:

this.model.get('turbo);

没有更多细节,很难猜出问题出在哪里。