我正在商店配置中直接设置我的字段.
Ext.define('T.store.Users', {
extend: 'Ext.data.Store',
autoLoad: false,
fields: [
{ name: 'Id', type: 'int' },
{ name: 'Name', type: 'string' }
]
});
Run Code Online (Sandbox Code Playgroud)
是否可以在商店中直接为这些字段设置idProperty?我看到的唯一选择是创建一个包含idProperty的单独模型类.但我想避免这种情况.
sra*_*sra 14
默认的id属性是id.您可以在模型或代理的阅读器上更改它.
注意:商店可以使用模型的代理(在此示例中未完成).
示例(两者都有)
// Set up a model to use in our Store
Ext.define('User', {
extend: 'Ext.data.Model',
idProperty: 'Id',
fields: [
{name: 'firstName', type: 'string'},
{name: 'lastName', type: 'string'},
{name: 'age', type: 'int'},
{name: 'eyeColor', type: 'string'}
]
});
var myStore = Ext.create('Ext.data.Store', {
model: 'User',
proxy: {
type: 'ajax',
url: '/users.json',
reader: {
type: 'json',
root: 'users',
idProperty: 'Id'
}
},
autoLoad: true
});
Run Code Online (Sandbox Code Playgroud)
理论上,您可以idProperty通过以下方式更改构造函数中的from:
Ext.define('T.store.Users', {
extend: 'Ext.data.Store',
autoLoad: false,
constructor: function(){
this.callParent(arguments);
this.model.prototype.idProperty = 'Id';
},
fields: [
{ name: 'Id', type: 'int' },
{ name: 'Name', type: 'string' }
]
});
Run Code Online (Sandbox Code Playgroud)