0

Student と School の 2 つの RelationalModels があります。学校には多くの生徒がいます。すべてのデータは Backbone.localStorage に保存されます

次のことをどのように行うべきかアドバイスが必要です。

  • モデルごとに 1 つずつ、Student と School の 2 つのコレクションが必要だと思いますか?
  • localStorage を使用してデータを保存する方法について混乱しています。各コレクションは独自の localStorage にデータを保存する必要がありますか?
4

1 に答える 1

2

backbone.js でローカル ストレージを実現するためにBackbone.localStorageを使用していることを理解しています。

私が見たように、2 つのコレクションが必要になります -SchoolsCollectionStudentsCollection. SchoolsCollectionlocal-storage アップリンクを実装します。

var SchoolsCollection = Backbone.Collection.extend({

  localStorage: new Backbone.LocalStorage("schools")

});

タイプSchoolsCollectionのモデルを保存しますSchoolModel。のインスタンスは、 のインスタンスであるSchoolModelという名前の属性を持ちます。studentsStudentsCollection

これにより、ローカルストレージは次のようになります

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オブジェクトが作成されています。

于 2013-12-06T08:43:41.237 に答える