View Full Version : Load grid from model without store?
karpatyx@ya.ru
8 Dec 2011, 6:29 AM
Hello guys,
For some reason I'd like to control CRUD actions for my objects by myself using, for example manual Ext.data.JsonP.requests.
So, let's assume I have User model and some method that returns valid json:
Ext.define('ikhtml.model.User', {
extend: 'Ext.data.Model',
fields: ['name', 'login', 'password']
});
// pseudo-code
collectionOfModel = getUsers(); // how to translate json response into "Users"?
grid.setDataSource(collectionOfModel); // and how to do this for Ext.grid.panel?
Could you please advise how to implement these 2 pseudo-code lines in a lightweight and elegant way?
Thanks in advance.
tvanzoelen
8 Dec 2011, 8:28 AM
Create a store, see http://docs.sencha.com/ext-js/4-0/#!/api/Ext.grid.Panel the inline data section.
There's a sample like below
Ext.create('Ext.data.Store', {
model: 'User',
data : [
{firstName: 'Ed', lastName: 'Spencer'},
{firstName: 'Tommy', lastName: 'Maintz'},
{firstName: 'Aaron', lastName: 'Conran'},
{firstName: 'Jamie', lastName: 'Avins'}
]
});
But that datapart you can do with your getUsers() function
var store = Ext.create('Ext.data.Store', {
model: 'User',
data : getUsers()
});
grid.reconfigure(store);
getUsers() should return an Array with User instances.
Due a bug it could be possible that you must also provide a column array in the grids reconfigure function. But it should work without.
Else
grid.reconfigure(store, columnsconfig);
Other nice sample, without model: http://docs.sencha.com/ext-js/4-0/#!/example/grid/array-grid.html
karpatyx@ya.ru
9 Dec 2011, 2:15 AM
Thank you, it works. Just one detail I still don't understand:
Ext.require('ikhtml.model.User'); // it works only if I add this line to module.
var usersStore = Ext.create('Ext.data.Store', {
model: 'ikhtml.model.User',
data: this.users
});
I there a way of auto-registering model?
Also I see that in "Simple MVC Example" model isn't explicitly required in other modules and it still works. Why? :)
tvanzoelen
9 Dec 2011, 2:22 AM
Ext.require('ikhtml.model.User'); is just loading it if it wasn't loaded.
If you put the model definition in a js file that is loaded before you use it, the you don't need require.
karpatyx@ya.ru
9 Dec 2011, 3:21 AM
But how is it loaded in Sencha's MVC example (extjs\examples\app\simple\)?
tvanzoelen
9 Dec 2011, 3:51 AM
With require :) but I do not use sencha's MVC structure. That why you did not found anything about it in my answer.
karpatyx@ya.ru
9 Dec 2011, 4:11 AM
I don't see require there, but nevermind. I'll just "blindly" use require. ))
Thank you!
Powered by vBulletin® Version 4.1.5 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.