有没有办法在函数中定义模型字段?

时间:2013-06-21 15:42:44

标签: extjs extjs4 extjs4.2

定义模型的常规方法如下:

Ext.define('App.MyModel', {
    extend: 'Ext.data.Model',

    fields: [
        {name: 'id', type: 'int'},
        {name: 'name', type: 'string'}
    ]
});

有没有办法在init-type方法中指定字段(可能还有所有配置属性),类似于如何在initComponent()中设置组件的配置?

拥有此功能对于为某些重复属性设置局部变量等事情会很有用。

2 个答案:

答案 0 :(得分:1)

您可以在Javascript中随意定义任何功能!

Ext.define('App.MyModel', {
    extend: 'Ext.data.Model',

    fields: function() {
        return [
            {name: 'id', type: 'int'},
            {name: 'name', type: 'string'}
        ];
    }() // important: run it immediately!
});

答案 1 :(得分:0)

您也可以在initComponent中执行类似的操作。我有时在根据我是否希望商店自动加载传递变量的组件中创建商店时使用它。

Ext.define('App.MyModel', {
    extend: 'Ext.data.Model',
    initFields: function(fieldType) {
        return [
            {name: 'id', type: fieldType},
            {name: 'name', type: fieldType}
        ];
    },
    initComponent: function() {
        var me = this;

        Ext.apply(me, {
            fields: me.initFields('string')
        });
        me.callParent();
    }
});