Pregunta

He estado trabajando en una aplicación de Emberjs durante aproximadamente una semana, y he escrito mi propio adaptador de almacenamiento local para Emberjs/datos para permitir la persistencia de datos. La aplicación es una pequeña aplicación de toma de notas. Idealmente, me gustaría tener un modelo de cuaderno que tenga muchos modelos de notas asociados con él.

Sin embargo, no he encontrado una manera de hacer esto que resulte en una matriz mutable. Mientras puede "implementar" una relación hasmana ...

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

... El ModelArray creado por el método Hasmany es inmutable en Emberjs. Parece que se está trabajando actualmente: hay una rama de "asociaciones" de Emberjs/Data aquí - Pero modificar el ModelArray es fundamental para esta aplicación, para crear una nueva nota:

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

Aunque el último compromiso de Emberjs/datos incluye la mutabilidad de la matriz, todavía carece de cualquier tipo de observación: el adaptador no se notifica cuando se realizan cambios y no se guardan.

Me pregunto: ¿Cuál es la mejor alternativa a una asociación hasmaní hasta que esta habilidad se agrega a los Emberjs/Datos? He estado buscando diferentes patrones, como tener una matriz de IDS de notas en el modelo de cuaderno con algún tipo de interfaz de recuperación/recuperación para acompañarlo, pero no he tenido absolutamente ninguna parte. He gastado una buena parte de hoy tratando de descubrir la mejor manera de hacer esto, y todo lo que tengo es mucha frustración.

¿Fue útil?

Solución

Ember-Data llegará allí eventualmente. Hasta entonces, actualmente solo mutito la matriz y llamo manualmente todos los métodos de la tienda correspondientes para reflejar la mutación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top