Frage

Ich arbeite jetzt seit ungefähr einer Woche an einer Emberjs -Anwendung und habe meinen eigenen LocalStorage -Adapter für Emberjs/Daten geschrieben, um Datendauerdauer zu ermöglichen. Die App ist eine kleine Notizanwendung. Idealerweise möchte ich ein Notebook -Modell haben, das viele Notizmodelle zugeordnet haben.

Ich habe jedoch keinen Weg gefunden, dies zu tun, der zu einem veränderlichen Array führt. Während Sie eine Hasmany -Beziehung "implementieren" können ...

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)
});

... Das von der Hasmany -Methode erstellte ModelArray ist in Emberjs unveränderlich. Es sieht so aus hier - Das Ändern des ModelArray ist jedoch für diese Anwendung von entscheidender Bedeutung, um einen neuen Hinweis zu erstellen:

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

Obwohl der jüngste Komitee für Emberjs/Daten Array -Mutability enthält, fehlt es immer noch irgendeine Art von Beobachtung - der Adapter wird nicht benachrichtigt, wenn Änderungen vorgenommen werden und sie nicht gespeichert werden.

Ich frage mich: Was ist die beste Alternative zu einem Hasmany -Verband, bis diese Fähigkeit zu Emberjs/Daten hinzugefügt wird? Ich habe verschiedene Muster untersucht, wie z. B. ein Notizen -IDS -Array im Notebook -Modell mit einer Art Fetch-/Ring -Schnittstelle, aber ich habe absolut nirgendwo hingewiesen. Ich habe heute einen ziemlich guten Teil von versucht, herauszufinden, wie es am besten ist, und alles, was ich habe, ist viel Frustration.

War es hilfreich?

Lösung

Ember-Data wird irgendwann dorthin kommen. Bis dahin mutiere ich derzeit nur das Array und rufe alle entsprechenden Speichermethoden manuell auf, um die Mutation widerzuspiegeln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top