Amplié un Modelo existente agregando campos usando el prototipo. Todo funciona bien, los datos pueden recibirse desde el lado del servidor y pueden usarse en el lado del cliente. Pero cuando actualizo mis datos y los vuelva a enviar al servidor, el escritor del proxy no reconoce los campos "nuevos".Extender Ext.data.Model (agregar campos dinámicamente)
Para ser más específicos: Tengo un modelo como este:
Ext.define('Osgaar', {
extend: 'Ext.data.Model',
fields: [
{ name: 'first', type: 'string' },
{ name: 'second', type: 'string' },
{ name' 'third', type: 'string' }
],
proxy: {
type: 'rest',
url: 'public/svcmethod',
reader: {
type: 'json',
root: 'data'
},
writer: {
type: 'json',
writeAllFields: false
}
}
});
me estoy extendiendo el modelo de esa manera:
Osgaar.prototype.fields.add({ name: 'fourth', type: 'string' });
Me trataron de establecer writeAllFields
a false
para obtener todo atributos transferidos, solo hay aquellos del modelo definido, no el agregado con el prototipo (Fiddler lo confirma).
¿Alguien ahora es una forma de resolver esto sin definir un nuevo modelo?
Gracias de antemano.
Esa es la solución. Agregar campos en la definición en sí parece establecer 'persist' en' true' (esto podría ser hecho por 'ModelManager', pero no lo he visto). Al agregar esto a través de prototipo, debe configurarse manualmente. ¡Muchas gracias! – LaOsgaar
He actualizado mi respuesta, veo una solución un poco mejor y un poco más de investigación –
Gracias por las explicaciones adicionales. Esto tiene sentido para mí. Lo probaré :) – LaOsgaar