2

私は約1週間EmberJSアプリケーションに取り組んでおり、データの永続性を可能にするために、EmberJS/Data用の独自のlocalStorageアダプターを作成しました。アプリは小さなメモを取るアプリケーションです。理想的には、多くのNoteモデルが関連付けられているNotebookモデルが必要です。

ただし、これを実行して可変配列を作成する方法は見つかりませんでした。hasManyリレーションを「実装」することはできますが...

Noted.Note = DS.Model.extend({
  title: DS.attr('string'),
  note_text: DS.attr('string'),
});

Noted.Notebook = DS.Model.extend({
  title: DS.attr("string"),
  notes: DS.hasMany(Noted.Note)
});

... hasManyメソッドによって作成されたModelArrayは、EmberJSでは不変です。これは現在作業中のようです-ここにEmberJS/Dataの「関連付け」ブランチがあります-しかし、ModelArrayを変更することは、このアプリケーションにとって重要です。つまり、新しい注を作成します。

var notebook = Noted.store.createResource(Noted.Notebook, {
  title: "Foo Notebook"
});
notebook.get("notes").pushObject(Noted.store.createResource(Noted.Note, {
  title: "Bar Note",
  note_text: "Blah blah blah."
}));
notebook.get("notes").objectAt(0).get("title") //returns undefined

EmberJS / Dataの最新のコミットには配列の可変性が含まれていますが、それでもいかなる種類の監視もありません。変更が行われたときにアダプターに通知されず、保存されません。

私は疑問に思っています:この機能がEmberJS / Dataに追加されるまで、hasManyアソシエーションの最良の代替手段は何ですか?ノートブックモデルにある種のフェッチ/取得インターフェイスを備えたノートID配列を使用するなど、さまざまなパターンを調べてきましたが、まったくどこにも行き着きませんでした。私はこれを行うための最良の方法を見つけようとして今日のかなりの部分を費やしました、そして私が持っているのはたくさんの欲求不満だけです。

4

1 に答える 1

1

Ember-data は最終的にそこに到達します。それまでは、配列を変更し、対応するすべてのストア メソッドを手動で呼び出して変更を反映させるだけです。

于 2012-02-16T21:36:20.953 に答える