骨干模型和选项是通过引用还是通过值传递给视图

时间:2012-10-03 22:40:45

标签: jquery backbone.js pass-by-reference

我主要想知道选项(第一个之后的任何模型)是否通过引用传递。

传递的第一个模型:

App.testModel = Backbone.Model.extend({
    defaults: {
        passBy: "value"
    }
});

要像选项一样传递的第二个模型:

App.testModelOptions = Backbone.Model.extend({
    defaults: {
        passBy: "value"
    }
});

查看将两个模型的passBy设置为“reference”

App.TestView = Backbone.View.extend({
    initialize: function() {
        this.model1 = this.model;
        this.model2 = this.options.model2;

        this.model1.set({passBy: "reference"});
        this.model2.set({passBy: "reference"});
    }
});

主:

// Router
App.AppRouter = Backbone.Router.extend({
    routes:{
        "":"test"
    }

    test:function() {
        this.testModel = new App.testModel();
        this.testModel2 = new App.testModelOptions();
        this.testView = new App.TestView({model: this.testModel, model2: this.testModel2});
        console.log(this.testModel.get("passBy"));
        console.log(this.testModel2.get("passBy"));
    }
});

1 个答案:

答案 0 :(得分:1)

是。如果您创建模型的实例,将其传递给20个视图,并在其中一个视图中调用set({passBy: "reference"}) - 该属性将在模型中针对所有视图进行更新,因为所有这20个视图都引用了内存中的相同模型。对于传递给视图的任何对象也是如此。