I want to read a particular value of an extjs data store and manipulate it locally. Response xml looks like :
<user><name>abc</name><surname>def</surname><book><bname>book1</bname></book></user>
My store will have just one user entry when response is received and i want to read ‘bname’ value. So far i have tried two approaches and both giving error.
approach1:
Ext.define('user', { extend: 'Ext.data.Model', fields: [ 'name', 'surname'], hasMany: {model: 'Book', name: 'book'}, proxy: { type: 'rest', url : request, reader: { type: 'json', root: 'user'} } }); Ext.define('Book', { extend: 'Ext.data.Model', fields: [ 'name'], belongsTo: 'user' }); var userstore = Ext.create('Ext.data.Store', { model: "user" }); incidentstore.load({ callback: function() { var inc = userstore.first(); var bk = inc.getBook(); console.log(dev.get('bname')); } });
Running above code gives error that ‘Ext.define is not a function’.
Approach2:
var proxy1 = new Jx.JxHttpProxyRest({ url: request, api : { read : { headers : { 'Accept' : APP + '.abc.def.usermanage.user+json;version=1' } } } }); var reader = new Ext.data.XmlReader( { rootProperty : 'user', record : 'book', id : 'id', }, [{ name : 'bname', mapping : 'book > bname'} ]); var writer = new Ext.data.XmlWriter( { encode : false }); var newstore = new Ext.data.Store( { id : 'book', restful : true, proxy : proxy1, remoteSort : true, reader : reader, writer : writer, autoload: true, listeners: { load: function() { console.log(newstore.data.first()); } } }); Ext.data.DataProxy.addListener('load', function(proxy, type, action, options, res) { console.log(res.responseText); }); newstore.load( { params : { start : 0, limit : myPageSize }, });
Above code does not display anything on console.
I am new to extjs and not sure how i can access ‘bname’ value from response. It would be great if someone can help
Advertisement
Answer
Below code worked for me :
var newproxy = new Ext4.data.proxy.Rest({ url : request, headers : { }, reader : { type : 'json', root : 'user.book' }}); // Typical Store collecting the Proxy, Reader and Writer together. var newstore = Ext4.create('Ext4.data.Store', { id : 'book', fields: ['bname'], restful : true, // <-- This Store is RESTful autoLoad : true, proxy : newproxy }); var book; newstore.load(); newstore.each(function(rec) { book= rec.get('bname'); });