如何使用别名从ExtJS中的Store引用模型?

bejyjqdl  于 2022-11-04  发布在  其他
关注(0)|答案(2)|浏览(166)

我有一个模型:

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 .

rta7y2nd

rta7y2nd1#

您不能使用alias从商店引用Model。但是,您可以使用Model的属性alternateClassName,如下所示:
第一个
现在,你可以只使用商店中的model: 'myMod'来引用它,而无需使用完整路径:MyAPP.model.myMod .

smdncfj3

smdncfj32#

我不能帮助定义和使用别名属性的模型。
这不是现成的(没有覆盖),因为模型是扩展Ext.Base。
正在扩展Ext.Class的类中定义alias属性。
而存储上的模型属性需要一个className或entityName,如果不设置自定义的entityName,则className为默认值。
实现这一点的一种方法是使用一个简写名称,如下所示:

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的选项可能会起作用,我不会依赖它,因为xtype是为组件设计的。

  • https://docs.sencha.com/extjs/6.5.3/classic/Ext.Class.html#cfg-xtype

有关此主题的更多资源:

相关问题