如何使用别名从 ExtJS 中的商店引用模型?
How can I reference a Model from a Store in ExtJS using alias?
我有一个模型:
Ext.define('MyAPP.model.myMod', {
extend : 'Ext.data.Model',
alias : 'model.myMod',
});
还有一家商店:
Ext.define('MyAPP.store.MyStore', {
extend : 'Ext.data.Store',
model : 'MyAPP.model.myMod',
});
如何使用别名在商店中引用模型?
我希望能够仅使用 model: 'model.myMod',
或 model: 'myMod'
.
进行引用
我无法让它工作,我必须始终使用完整路径来引用它:MyAPP.model.myMod
。
我无法帮助在模型上定义和使用别名属性。
这不是开箱即用的(没有覆盖),因为模型正在扩展 Ext.Base。
别名 属性 正在 类 中定义,扩展 Ext.Class。
并且商店中的模型 属性 需要一个类名或实体名,如果您没有设置自定义实体名,则类名是默认值。
实现此目的的一种方法,使用 shorthand 名称可能是这样的:
Ext.define('foo.bar.test', {
extend: 'Ext.data.Model',
schema: {
namespace: 'foo.bar'
},
fields:[ 'name', 'email', 'phone']
})
Ext.create('Ext.data.Store', {
storeId: 'simpsonsStore',
model: 'test',
data: [
{ name: 'Lisa', email: 'lisa@simpsons.com', phone: '555-111-1224' },
{ name: 'Bart', email: 'bart@simpsons.com', phone: '555-222-1234' },
{ name: 'Homer', email: 'homer@simpsons.com', phone: '555-222-1244' },
{ name: 'Marge', email: 'marge@simpsons.com', phone: '555-222-1254' }
]
});
Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
store: Ext.data.StoreManager.lookup('simpsonsStore'),
columns: [
{ text: 'Name', dataIndex: 'name' },
{ text: 'Email', dataIndex: 'email', flex: 1 },
{ text: 'Phone', dataIndex: 'phone' }
],
height: 200,
width: 400,
renderTo: Ext.getBody()
});
提到的使用 xtype 的选项可能有效,我不会依赖它,因为 xtypes 是为组件设计的。
关于此主题的更多资源:
您不能使用 alias
从商店引用模型。但是,您可以为您的模型使用 属性 alternateClassName
,如下所示:
Ext.define('MyAPP.model.myMod', {
extend : 'Ext.data.Model',
alternateClassName : 'myMod',
});
Ext.define('MyAPP.store.MyStore', {
extend : 'Ext.data.Store',
model : 'myMod',
});
现在,您可以仅使用商店中的 model: 'myMod'
进行引用。
无需使用完整路径引用它:MyAPP.model.myMod
.
我有一个模型:
Ext.define('MyAPP.model.myMod', {
extend : 'Ext.data.Model',
alias : 'model.myMod',
});
还有一家商店:
Ext.define('MyAPP.store.MyStore', {
extend : 'Ext.data.Store',
model : 'MyAPP.model.myMod',
});
如何使用别名在商店中引用模型?
我希望能够仅使用 model: 'model.myMod',
或 model: 'myMod'
.
我无法让它工作,我必须始终使用完整路径来引用它:MyAPP.model.myMod
。
我无法帮助在模型上定义和使用别名属性。
这不是开箱即用的(没有覆盖),因为模型正在扩展 Ext.Base。
别名 属性 正在 类 中定义,扩展 Ext.Class。
并且商店中的模型 属性 需要一个类名或实体名,如果您没有设置自定义实体名,则类名是默认值。
实现此目的的一种方法,使用 shorthand 名称可能是这样的:
Ext.define('foo.bar.test', {
extend: 'Ext.data.Model',
schema: {
namespace: 'foo.bar'
},
fields:[ 'name', 'email', 'phone']
})
Ext.create('Ext.data.Store', {
storeId: 'simpsonsStore',
model: 'test',
data: [
{ name: 'Lisa', email: 'lisa@simpsons.com', phone: '555-111-1224' },
{ name: 'Bart', email: 'bart@simpsons.com', phone: '555-222-1234' },
{ name: 'Homer', email: 'homer@simpsons.com', phone: '555-222-1244' },
{ name: 'Marge', email: 'marge@simpsons.com', phone: '555-222-1254' }
]
});
Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
store: Ext.data.StoreManager.lookup('simpsonsStore'),
columns: [
{ text: 'Name', dataIndex: 'name' },
{ text: 'Email', dataIndex: 'email', flex: 1 },
{ text: 'Phone', dataIndex: 'phone' }
],
height: 200,
width: 400,
renderTo: Ext.getBody()
});
提到的使用 xtype 的选项可能有效,我不会依赖它,因为 xtypes 是为组件设计的。
关于此主题的更多资源:
您不能使用 alias
从商店引用模型。但是,您可以为您的模型使用 属性 alternateClassName
,如下所示:
Ext.define('MyAPP.model.myMod', {
extend : 'Ext.data.Model',
alternateClassName : 'myMod',
});
Ext.define('MyAPP.store.MyStore', {
extend : 'Ext.data.Store',
model : 'myMod',
});
现在,您可以仅使用商店中的 model: 'myMod'
进行引用。
无需使用完整路径引用它:MyAPP.model.myMod
.