Javascript Backbone.js:将值从集合传递到每个模型

Javascript Backbone.js:将值从集合传递到每个模型,javascript,backbone.js,backbone-relational,Javascript,Backbone.js,Backbone Relational,初始化时,我需要将一个值从视图传递给集合中的每个模型 直到集合,我们可以通过主干中的“选项”。集合构造函数 在此之后,是否有任何技术可以将一些“选项”传递到集合中的每个模型中 var Song = Backbone.Model.extend({ defaults: { name: "Not specified", artist: "Not specified" }, initialize: function (attributes, opt

初始化时,我需要将一个值从视图传递给集合中的每个模型

直到集合,我们可以通过主干中的“选项”。集合构造函数

在此之后,是否有任何技术可以将一些“选项”传递到集合中的每个模型中

var Song = Backbone.Model.extend({
    defaults: {
        name: "Not specified",
        artist: "Not specified"
    },
    initialize: function (attributes, options) {
        //Need the some_imp_value accessible here
    },
});

var Album = Backbone.Collection.extend({
    model: Song

    initialize: function (models, options) {
        this.some_imp_value = option.some_imp_value;
    }
});
您可以重写“\u prepareModel”方法


现在,您可以查看在“initialize”中传递给模型的属性,您将获得一些\u imp\u值,然后可以根据需要在模型上设置这些值

虽然它似乎没有文档记录,但我发现至少在最新版本的主干(v1.3.3)中,传递给集合的选项对象被传递给每个子模型,并扩展到集合生成的其他选项项中。我还没有花时间确认旧版本是否如此

例如:

var Song = Backbone.Model.extend({
    defaults: {
        name: "Not specified",
        artist: "Not specified"
    },
    initialize: function (attributes, options) {
        //passed through options
        this.some_imp_value = options.some_imp_value

        //accessing parent collection assigned attributes
        this.some_other_value = this.collection.some_other_value
    },
});

var Album = Backbone.Collection.extend({
    model: Song

    initialize: function (models, options) {
        this.some_other_value = "some other value!";
    }
});

var myAlbum = new Album([array,of,models],{some_imp_value:"THIS IS THE VALUE"});
注意:我不确定options对象是否传递给后续Collection.add事件

var Song = Backbone.Model.extend({
    defaults: {
        name: "Not specified",
        artist: "Not specified"
    },
    initialize: function (attributes, options) {
        //passed through options
        this.some_imp_value = options.some_imp_value

        //accessing parent collection assigned attributes
        this.some_other_value = this.collection.some_other_value
    },
});

var Album = Backbone.Collection.extend({
    model: Song

    initialize: function (models, options) {
        this.some_other_value = "some other value!";
    }
});

var myAlbum = new Album([array,of,models],{some_imp_value:"THIS IS THE VALUE"});