質問

私は約1週間Emberjsアプリケーションに取り組んでおり、データの持続性を可能にするためにEmberjs/データ用の独自のLocalStorageアダプターを作成しています。このアプリは、小さなメモを取るアプリケーションです。理想的には、それに関連付けられている多くの音符モデルを備えたノートブックモデルが欲しいです。

ただし、これを行う方法は、可変アレイになりません。ハスマニー関係を「実装」することができますが...

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メソッドによって作成されたモデルアレイは、Emberjsでは不変です。これは現在取り組んでいるようです - emberjs/dataの「協会」ブランチがあります ここ - しかし、モデルアレイを変更することは、このアプリケーションにとって重要です。つまり、新しいメモを作成します。

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/データの最新のコミットには配列の変化が含まれていますが、まだどのような観察もありません - 変更が行われたときにアダプターは通知されず、保存されていません。

私は疑問に思っています:この能力がemberjs/dataに追加されるまで、Hasmany Associationの最良の選択肢は何ですか?ノートブックモデルにノートIDアレイをある種のフェッチ/取得インターフェイスを使用して、それに合わせて入手するなど、さまざまなパターンを検討してきましたが、絶対にどこにも獲得していません。私は今日、これを行うための最良の方法を把握しようとしてかなりの部分を費やしましたが、私が持っているのは多くのフラストレーションだけです。

役に立ちましたか?

解決

Ember-Dataは最終的にそこに着きます。それまでは、私は現在、アレイを変異させるだけで、対応するすべてのストアメソッドを手動で呼び出して突然変異を反映しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top