我目前正在尝试使用 ExtJS 中的JSON
代理阅读器从我的Chef服务器上的端点读取数据,以便在网格上显示它。
通常
JSON
响应看起来像这样:
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optioreprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}, {
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
}
但是,我从端点收到的响应,特别是organizations/(organization-name)/cookbooks
端点
是这样的:
{
"my_cookbook_1": {
"url": "company.com",
"versions": [{
"version": "0.1.0",
"url": "company.com"
}]
}
}, {
"my_cookbook_2": {
"url": "company.com",
"versions": [{
"version": "0.2.0",
"url": "company.com"
}]
}
}
使用前一个响应,我可以将网格上的dataIndex
属性指定为name
并获取相应的信息。
var optionalCookbooksGrid = Ext.create('Ext.grid.Panel', {
store: optionalCookbooksStore,
width: '100%',
height: 200,
title: 'Optional Cookbooks',
columns: [{
text: 'Role',
width: 100,
sortable: false,
hideable: false,
dataIndex: 'userID'
}]
});
因为来自Chef Server的响应没有一致的dataIndex
。
如何向grid
显示内容?
答案 0 :(得分:0)
我对extJS一无所知所以这不是一个直接的答案,但是这也不是一个真正的厨师问题。基本上,Chef REST API不是为简单客户端直接使用而构建的。值得注意的是,您在那里展示的列表端点仅为每个食谱提供了名称(和URL,但这是无用的)。从那里你需要再做N个查询来获取每个版本的版本列表,然后可能需要N * M来获取每个版本的详细信息。在将生成的海量数据blob输入UI框架之前,通常会执行此操作。