TreeStore存在一个特殊问题,其余类型树存储将-1添加到打破后端路由的模型名称。 TreeStore定义为
Ext.define('Gateway.store.Company', {
extend: 'Ext.data.TreeStore',
model: 'Gateway.model.Company',
proxy: {
type: 'rest',
url: 'http://gateway-email-mock/',
reader: {
type: 'json'
}
}
});
公司模型定义为
Ext.define('Gateway.model.Company', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int' },
{name: 'name', type: 'string' }
]
});
对商店感兴趣的观点是
Ext.define('Gateway.view.company.Company', {
extend: 'Ext.tree.Panel',
alias: 'widget.company-list',
store: 'Gateway.store.Company',
rootVisible: false
});
加载小部件时,商店会创建URL
http://gateway-email-mock/Gateway.model.Company-1
-1如何在模型名称后到达那里?我不认为这是故意的?
感谢您的任何提示。
答案 0 :(得分:1)
Rixo是正确的,即尝试加载其根节点的树存储。默认的id生成器以下列方式生成其ID
idgen: {
isGenerator: true,
type: 'default',
generate: function () {
return null;
},
getRecId: function (rec) {
return rec.modelName + '-' + rec.internalId;
}
}
这意味着您的根记录为rec.modelName + '-' + rec.internalId
,这正是正在发出的请求:http://gateway-email-mock/Gateway.model.Company-1
解决方案是确保您创建一个带有ID的根节点,以便树的存储将请求正确的ID,正确的是为您生成根节点并为其提供自动ID。请参阅http://docs-origin.sencha.com/extjs/4.2.2/source/TreeStore.html#Ext-data-TreeStore-method-load和http://docs-origin.sencha.com/extjs/4.2.2/#!/api/Ext.data.TreeStore-cfg-root