我正在尝试将REST API连接到我的ExtJS应用程序。
对于GET /user
个类似的请求,我返回如下响应:
{items: [{id: 1, ...}, {id: 2, ....}], total: 2}
所以我为此创建了一个模型:
Ext.define('model.User', {
extend: 'Ext.data.Model',
fields: [
{ name: 'id', type: 'int' },
{ name: 'name' },
],
proxy: {
reader: {
type: 'json',
totalProperty: 'total',
rootProperty: 'items'
},
type: 'rest',
url: '/Api/User',
}
});
网格加载数据,看起来都很完美。现在我希望能够请求我的api用作{id: 1, ...}
的单个记录。
但是当我执行model.User.load(1)
时,永远不会触发成功处理程序,因为响应不包含items
属性。如果我将我的记录放在该属性中,它将起作用,但对于其他API用户来说也会显得很难看。
如何在没有root属性的情况下使其工作?我无法在模型上找到代理/阅读器的任何事件来动态更改它。
答案 0 :(得分:7)
rootProperty
也可以是一个函数,因此您可以执行以下操作:
rootProperty: function(raw) {
return raw.items ? raw.items : raw;
}