-
3 Nov 2011 5:37 PM #1
Answered: Prevent Proxy from sending extra fields
Answered: Prevent Proxy from sending extra fields
Here is my model:
Code: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:
Code:{"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.
-
Best Answer Posted by skirtle
I don't see a pleasant way to do this. I haven't tested it but I'd imagine something like this might work:
Code: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; } });
-
3 Nov 2011 6:13 PM #2
I don't see a pleasant way to do this. I haven't tested it but I'd imagine something like this might work:
Code: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; } });
-
4 Nov 2011 12:04 PM #3
Thanks for the response. This works. Hopefully I'll find a better way of doing this sometime.


Reply With Quote