ember.js - data - ember tutorial
Agregue dinĂ¡micamente el objeto js a la matriz modelo en 1.13 (3)
Tengo el siguiente código:
var msg = this.store.createRecord({text:''first title'', createdAt: "2015-06-22T20:06:06+03:00" })
this.get(''model.content'').pushObject(msg);
msg.save();
Creamos nuevo registro. Luego presione en el modelo para mostrar. Funcionó perfectamente en la versión 1.9, pero después de actualizarlo a la versión más reciente, se rompe y muestra este error:
TypeError: internalModel.getRecord no es una función
Después de algunas investigaciones salí a esta solución
this.get(''messages.content'').unshiftObject(message.internalModel);
y en parte ayuda. Ahora tengo dos problemas:
- No estoy seguro si el uso de la API privada de datos de brasas es una buena idea
- Tengo un retraso molesto entre agregar el registro al modelo y representarlo en la pantalla. Más que eso si no llamo a msg.save (); el registro no está renderizado Por lo que entiendo, espera hasta que tengamos respuesta del servidor y solo entonces la procesemos. Pero necesito un comportamiento opuesto: primero tengo que mostrar el registro y luego guardarlo (mostrando el estado de guardado para el usuario), de esta manera el usuario piensa que todo va extremadamente rápido.
Antes de 1.13:
this.get(''content'').pushObjects(messages);
Después de 1.13:
messages.forEach(functio(message) {
this.get(''model.content'').pushObject(message._internalModel);
});
Haría que todos los modelos devuelvan a la matriz, agregaría la matriz a esta matriz
setPeople:function(){
this.set(''people'',this.get(''content'').toArray())
}.observes(''content'')
Luego, encuentra más modelos de persona, a la matriz.
getMoreUsers(){
var self = this;
this.set(''offset'', this.get(''offset'')+1);
self.store.findAll(''person'').then(function(people){
self.get(''people'').pushObjects(people.toArray());
});
Una posible solución sin recurrir a la API privada es usar toArray()
( problema de github ):
var array = this.get(''messages'').toArray()
array.addObjects(this.get(''messages''))
array.addObject(msg)
this.set(''messages'', array)