从子视图将模型添加到父视图

时间:2016-11-21 17:52:23

标签: backbone.js backbone-views backbone-events

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

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

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

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

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

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

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

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

如何从孩子那里将turbo模型添加到父级?

谢谢!

1 个答案:

答案 0 :(得分: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);

如果没有更多细节,很难猜出问题的来源。