I want to read a particular value of an extjs data store and manipulate it locally. Response xml looks like :
JavaScript
x
2
1
<user><name>abc</name><surname>def</surname><book><bname>book1</bname></book></user>
2
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:
JavaScript
1
26
26
1
Ext.define('user', {
2
extend: 'Ext.data.Model',
3
fields: [ 'name', 'surname'],
4
hasMany: {model: 'Book', name: 'book'},
5
proxy: {
6
type: 'rest',
7
url : request,
8
reader: { type: 'json', root: 'user'}
9
}
10
});
11
Ext.define('Book', {
12
extend: 'Ext.data.Model',
13
fields: [ 'name'],
14
belongsTo: 'user'
15
});
16
var userstore = Ext.create('Ext.data.Store', {
17
model: "user"
18
});
19
incidentstore.load({
20
callback: function() {
21
var inc = userstore.first();
22
var bk = inc.getBook();
23
console.log(dev.get('bname'));
24
}
25
});
26
Running above code gives error that ‘Ext.define is not a function’.
Approach2:
JavaScript
1
39
39
1
var proxy1 = new Jx.JxHttpProxyRest({
2
url: request,
3
api : {
4
read : { headers : { 'Accept' : APP + '.abc.def.usermanage.user+json;version=1' } }
5
}
6
});
7
8
var reader = new Ext.data.XmlReader( {
9
rootProperty : 'user',
10
record : 'book',
11
id : 'id',
12
}, [{ name : 'bname', mapping : 'book > bname'} ]);
13
14
var writer = new Ext.data.XmlWriter( {
15
encode : false
16
});
17
18
var newstore = new Ext.data.Store( {
19
id : 'book',
20
restful : true,
21
proxy : proxy1,
22
remoteSort : true,
23
reader : reader,
24
writer : writer,
25
autoload: true,
26
listeners: {
27
load: function() {
28
console.log(newstore.data.first());
29
}
30
}
31
});
32
Ext.data.DataProxy.addListener('load', function(proxy, type, action, options, res) {
33
console.log(res.responseText);
34
});
35
newstore.load( {
36
params : { start : 0, limit : myPageSize },
37
38
});
39
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 :
JavaScript
1
24
24
1
var newproxy = new Ext4.data.proxy.Rest({
2
url : request,
3
headers : {
4
},
5
reader : {
6
type : 'json',
7
root : 'user.book'
8
}});
9
10
// Typical Store collecting the Proxy, Reader and Writer together.
11
var newstore = Ext4.create('Ext4.data.Store', {
12
id : 'book',
13
fields: ['bname'],
14
restful : true, // <-- This Store is RESTful
15
autoLoad : true,
16
proxy : newproxy
17
});
18
19
var book;
20
newstore.load();
21
newstore.each(function(rec) {
22
book= rec.get('bname');
23
});
24