\ [Ext.createByAlias \]将Ext4迁移到Ext5代码库时无法识别的别名:data.field.text

时间:2015-04-20 12:52:05

标签: extjs extjs5

我正在将一个大型代码库(我没写过)从Ext JS 4迁移到Ext JS 5.在创建新的模型定义时,我注意到以下代码:

Ext.define('host', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'ip',
        type: 'string'
    }, {
        name: 'hostname',
        type: 'text'
    }]
});

与Ext js 4一起使用但在Ext 5上失败并显示消息:

Error: [Ext.createByAlias] Unrecognized alias: data.field.text

显然这里的解决方案是更改类型:'text'键入:'string' 但是我注意到在Ext js 4 availables types中,'text'甚至不在这里。这怎么可能有效?

1 个答案:

答案 0 :(得分:3)

Ext.data.Field's constructor(Ext JS 4)中,它通过以下方式确定了类型:

if (me.type) {
    if (Ext.isString(me.type)) {
        me.type = types[me.type.toUpperCase()] || types.AUTO;
    }
} else {
    me.type = types.AUTO;
}

它找不到' text',因此它会将其设置为' AUTO'。

由于您将其设置为键入' text',我假设其值为字母数字,因此它会秘密使用' string'作为它的类型。

在ExtJS 5中,他们添加了更好的错误消息,以帮助您保持正常运行,这就是您现在看到错误的原因。