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

Extjs \[Ext.createByAlias\]将Ext4迁移到Ext5代码库时无法识别的别名:data.field.text,extjs,extjs5,Extjs,Extjs5,我正在将一个大型代码库(我没有编写)从ExtJS4迁移到ExtJS5。创建新模型定义时,我注意到以下代码: Ext.define('host', { extend: 'Ext.data.Model', fields: [{ name: 'ip', type: 'string' }, { name: 'hostname', type: 'text' }] }); 适用于Ext js 4,但在Ext 5

我正在将一个大型代码库(我没有编写)从ExtJS4迁移到ExtJS5。创建新模型定义时,我注意到以下代码:

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” 然而,我注意到在ExtJS4中,“text”甚至不在这里。这是怎么回事

在(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”类型,我假设其值是字母数字,因此它会秘密地使用“string”作为其类型

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

在(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”类型,我假设其值是字母数字,因此它会秘密地使用“string”作为其类型


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

键入:“text”会导致错误。键入:“text”会导致错误。因此,如果我理解正确,我将在Ext JS 5中收到此消息,因为框架现在对数据类型的正确性要求更严格了?这也是我的印象。现在,它不会通过转换代码(可能导致代码执行意外操作)来默默地修复任何问题,而是抛出一条描述性错误消息,迫使您修复问题。因此,如果我没有弄错,我将在Ext JS 5中获得此消息,因为框架现在对数据类型的正确性要求更严格了?这也是我的印象。它现在抛出一条描述性错误消息,迫使您修复问题,而不是通过转换代码(可能导致代码执行意外操作)来静默地修复任何问题。