我想读取 extjs 数据存储的特定值并在本地对其进行操作。响应 xml 看起来像:
<user><name>abc</name><surname>def</surname><book><bname>book1</bname></book></user>
当收到响应并且我想读取“bname”值时,我的商店将只有一个用户条目。到目前为止,我已经尝试了两种方法,并且都给出了错误。
方法1:
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'));
}
});
运行上面的代码会给出“Ext.define 不是函数”的错误。
方法2:
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 },
});
上面的代码不会在控制台上显示任何内容。
我是 extjs 的新手,不知道如何从响应中访问“bname”值。如果有人可以提供帮助,那就太好了