extjs6怎么接收后端传过来的map集合里面有两个list集合的数据
时间: 2024-05-14 10:14:52 浏览: 17
可以使用Ext.Ajax.request()方法,其中options的参数中设置success回调函数,接收后端传过来的数据。在回调函数中,可以使用Ext.decode()方法将后端传来的JSON字符串转化为对象,然后直接访问对象中的map集合和list集合数据。具体代码如下:
```
Ext.Ajax.request({
url: 'yourUrl',
method: 'POST',
success: function(response, options) {
var data = Ext.decode(response.responseText); // 将后端传来的JSON字符串转化为对象
var mapData = data.mapData; // 访问map集合数据
var listData1 = data.listData1; // 访问list集合数据1
var listData2 = data.listData2; // 访问list集合数据2
// do something with mapData, listData1, listData2
},
failure: function(response, options) {
// handle error
}
});
```
相关问题
extjs6怎么接收后端传过来的map集合里面有两个list集合的数据并格式化到model层
可以使用Ext.data.reader.Json的transform方法将后端传过来的数据进行格式化,然后再通过Ext.data.Model的set方法将格式化后的数据设置到model的属性中。
以下是一个示例代码:
假设后端返回的数据格式如下:
{
"name": "John",
"age": 30,
"address": {
"city": "New York",
"state": "NY"
},
"hobbies": ["reading", "swimming"],
"friends": [
{"name": "Mike", "age": 28},
{"name": "Kate", "age": 32}
]
}
那么在前端可以这样处理:
// 定义数据模型
Ext.define('MyModel', {
extend: 'Ext.data.Model',
fields: [
{name: 'name', type: 'string'},
{name: 'age', type: 'int'},
{name: 'city', type: 'string'},
{name: 'state', type: 'string'},
{name: 'hobbies', type: 'auto'},
{name: 'friends', type: 'auto'}
]
});
// 定义数据代理
Ext.define('MyProxy', {
extend: 'Ext.data.proxy.Ajax',
alias: 'proxy.myproxy',
reader: {
type: 'json',
transform: function(data) {
// 将address对象的属性展开到根级别
data.city = data.address.city;
data.state = data.address.state;
delete data.address;
// 将friends数组转换成对象
var friends = {};
Ext.each(data.friends, function(friend) {
friends[friend.name] = friend.age;
});
data.friends = friends;
return data;
}
}
});
// 定义数据源
var store = Ext.create('Ext.data.Store', {
model: 'MyModel',
proxy: {
type: 'myproxy',
url: 'data.json'
}
});
// 加载数据
store.load({
callback: function(records, operation, success) {
if (success) {
// 遍历数据,输出每个记录的属性
Ext.each(records, function(record) {
console.log(record.get('name'));
console.log(record.get('age'));
console.log(record.get('city'));
console.log(record.get('state'));
console.log(record.get('hobbies'));
console.log(record.get('friends'));
});
}
}
});
在transform方法中,先将address对象的属性展开到根级别,然后将friends数组转换成对象。最后返回这个格式化后的数据对象。这样在model中定义的fields可以正确地映射到数据中。
在加载数据时,可以通过callback回调函数获取加载的数据,并通过Ext.data.Model的get方法获取每个记录的属性。
extjs6接收展示一个list集合里面的map集合的完整案例
好的,我理解了您的问题。以下是一个简单的 ExtJS 6 的代码示例,用于从一个包含多个 Map 对象的 List 中获取和展示数据:
```
Ext.define('MyApp.model.MyModel', {
extend: 'Ext.data.Model',
fields: [
{ name: 'id', type: 'int' },
{ name: 'name', type: 'string' },
{ name: 'values', convert: function (value, record) {
// 将 Map 对象数组转换成字符串
return JSON.stringify(value);
} }
]
});
Ext.create('Ext.grid.Panel', {
store: {
model: 'MyApp.model.MyModel',
data: [
{
id: 1,
name: 'Map Collection 1',
values: [
{ name: 'Key1', value: 'Value1' },
{ name: 'Key2', value: 'Value2' },
{ name: 'Key3', value: 'Value3' }
]
},
{
id: 2,
name: 'Map Collection 2',
values: [
{ name: 'Key4', value: 'Value4' },
{ name: 'Key5', value: 'Value5' },
{ name: 'Key6', value: 'Value6' }
]
}
]
},
columns: [
{ text: 'ID', dataIndex: 'id' },
{ text: 'Name', dataIndex: 'name' },
{ text: 'Values', dataIndex: 'values' }
],
renderTo: Ext.getBody()
});
```
该示例中包含定义一个 `MyModel` 模型的代码,该模型包含名为 `values` 的字段。这个字段使用 `convert` 函数将 Map 对象数组转换成字符串。最后,在 `Ext.grid.Panel` 中,数据存储在 `store` 中,该 `store` 包含多个 `MyModel` 记录,并构建了一个包含多个 `Map` 对象的 `values` 数组。最后,使用 `columns` 属性定义表格中的列,并在页面上呈现出来。
请注意,此代码仅供参考,并假定您已经具有一定的 ExtJS 6 开发经验。如果需要更多的帮助或说明,请随时联系我。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)