PDA

View Full Version : Prevent Proxy from sending extra fields



ddrmaxgt37
3 Nov 2011, 5:37 PM
Here is my model:





Ext.define('A.model.Group', {
extend: 'Ext.data.Model',
fields:['id', 'name'],
proxy: {
type: 'rest',
url: '/group',
reader: {
type: 'json',
root: 'data'
},
writer: {
type: 'json',
writeAllFields: false
}
}
});

The model is being used in a Tree via a TreeStoreThe problem is that when a PUT, POST or DELETE method is done, instead of sending only fields from the model in the JSON payload, fields from Ext.data.NodeInterface are also sent. Here is an example payload:





{"id":"","name":"TestGroup","parentId":"8","index":0,"depth":3,"checked":null}


I don't want the extra fields parentId, index, depth, and checked to be sent. What is the best way to do this? I don't want to have to ignore them on the server.

skirtle
3 Nov 2011, 6:13 PM
I don't see a pleasant way to do this. I haven't tested it but I'd imagine something like this might work:


Ext.define('A.model.Group', {
extend: 'Ext.data.Model',
fields:['id', 'name'],
...
});

// Looks odd but this will cause the model's prototype to have the node fields added
Ext.data.NodeInterface.decorate(Ext.create('A.model.Group'));

A.model.Group.prototype.fields.each(function(field) {
if (field.name !== 'id' && field.name !== 'name') {
field.persist = false;
}
});

ddrmaxgt37
4 Nov 2011, 12:04 PM
Thanks for the response. This works. Hopefully I'll find a better way of doing this sometime.