0

コレクションに追加されるすべての新しいモデルのプロパティとして設定される新しいコレクションをインスタンス化するときに、値を渡す方法があるかどうか疑問に思っています。例えば、

allSchools = [/* list of schools */];
this.schoolTypes = new Backbone.Collection([], { model:SchoolType }); //pass in allSchools here, somehow
this.schoolTypes.add({name:'New SchoolType'});

ここで、新しく追加されたモデルにはthis.allSchools(またはthis.options.allSchoolsなど)が含まれます。これを行うのに十分簡単な方法があるはずですか?現在、私はグローバルなallSchoolsオブジェクトにアクセスしているだけですが、あまりモジュール化されていません。

4

2 に答える 2

1

これは最善の方法ではないかもしれませんが、モデルに後方リンクを追加して、モデルがその親コレクションにアクセスできるようにすることができます。

this.schoolType.allSchools = allSchools;
var col = this.schoolType;
this.schoolType.each(function(el,i){
    el.collection = col;
});
// ...
// then access all the schools from your SchoolType model `m` : 
if(m.collection)
    var allSchools = m.collection.allSchools;
于 2012-06-08T18:26:07.077 に答える
0

muが彼のコメントで述べたように、モデルには組み込みの.collectionプロパティがあります。したがって、コレクションにプロパティを設定すると、コレクション内の任意のモデルから次のようにアクセスできます。

schoolType = schoolTypes.at(0);
allSchools = schoolType.collection.allSchools;
于 2012-06-16T15:30:54.147 に答える