backbone.js でローカル ストレージを実現するためにBackbone.localStorageを使用していることを理解しています。
私が見たように、2 つのコレクションが必要になります -SchoolsCollection
とStudentsCollection
. SchoolsCollection
local-storage アップリンクを実装します。
var SchoolsCollection = Backbone.Collection.extend({
localStorage: new Backbone.LocalStorage("schools")
});
タイプSchoolsCollection
のモデルを保存しますSchoolModel
。のインスタンスは、 のインスタンスであるSchoolModel
という名前の属性を持ちます。students
StudentsCollection
これにより、ローカルストレージは次のようになります
key: schools
value: afe5a7bd,afe5a7bd
key: schools-afe5a7bd
value: {"name":"MIT","students":[{"name":"Joe"}],"id":"afe5a7bd"}
key: schools-afe5a7bd
value: {"name":"Eaton","students":[{"name":"Max"}],"id":"afe5a7bd"}
ご覧のとおりStudentModel
、シリアライゼーションで型が失われます。この効果を補完するために実装する必要がありparse()
ます。SchoolModel
var SchoolModel = Backbone.Model.extend({
parse: function(response) {
return _.extend({}, response, {
students: new StudentCollection(response.students)
});
}
});
単一の学校モデルはparse()
、その属性のカスタム処理によって復元されますstudents
。各生徒のモデルを説明するキーと値のペアを含むオブジェクトの配列を使用して、新しいStudentsCollection
オブジェクトが作成されています。