5

初期化中に、ビューからコレクション内の各モデルに値を渡す必要があります。

コレクションまで、Backbone.Collectionコンストラクターの「options」で渡すことができます。

この後、コレクション内の各モデルにいくつかの「オプション」を渡すことができるテクニックはありますか?

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;
    }
});
4

2 に答える 2

0

文書化されていないように見えますが、少なくともバックボーンの最新バージョン (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 イベントに渡されるかどうかはわかりません

于 2016-10-27T15:29:39.087 に答える