PDA

View Full Version : Modify models before are created in the store



jfarribillaga
24 Aug 2012, 5:11 PM
Hi folks,

I'm creating a small application which it makes a request to an external API and populates a store (by a proxy). AFAIK, the store creates a collection of models.

What I'm trying to do is to modify received data before the model it's being created. For example:

I have a model with fields: id, title, description

I need to override some method invoked by store to parse title json data and save it parsed. The question is, what method should I override or what event should I bind for it?

Thanks in advance!

jerome76
24 Aug 2012, 7:50 PM
You should try doing an Ajax or JsonP request to retrieve the data then. Then you will have the raw data in the response and you can build your models manually that way.

jfarribillaga
25 Aug 2012, 1:59 PM
Thanks jerome76!

I found a possible solution, but I'm not sure if it could have some performance issues.

I created the store with a proxy requesting for the data. The autoload attribute was set to false.
Then, in the controller, I defined the launch method which it gets the store, set an on-load listener and finally, call to mystore.load() method.

The onLoad handler, loops over the models structure and for each item on it, first, modify the field and then it call to item.set(field, value).

This did the work, but what I am wondering if the field is being set two times (first time when the store load the original data, and other, when I set the new parsed value). If it was this case, it could have some issues of performance because we are looping over an n-sized structure, doing two times, will have double effort.

Bunchofstring
26 Aug 2012, 5:49 PM
Maybe you can do this with a small change to your Model definition. If you set a convert function on the title data field (Model definition), you can do whatever you want to the raw data before it gets added to the Record.

Check out the Types and conversions section of the documentation (near the top): http://docs.sencha.com/touch/2-0/#!/api/Ext.data.Field
(http://docs.sencha.com/touch/2-0/#!/api/Ext.data.Field)
Also make sure to read the convert property docs: http://docs.sencha.com/touch/2-0/#!/api/Ext.data.Field-cfg-convert

jfarribillaga
28 Aug 2012, 4:28 PM
Hey dude, Thanks! This makes what I was searching ;)