\[Ext.createByAlias\] 无法识别的别名:data.field.text 将 Ext4 迁移到 Ext5 代码库时
\[Ext.createByAlias\] Unrecognized alias: data.field.text when migrating a Ext4 to Ext5 codebase
我正在将一个大型代码库(不是我编写的)从 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' 甚至不在这里。这怎么可能奏效?
在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 中,他们添加了更好的错误消息来帮助您保持正轨,这就是您现在看到该错误的原因。
我正在将一个大型代码库(不是我编写的)从 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' 甚至不在这里。这怎么可能奏效?
在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 中,他们添加了更好的错误消息来帮助您保持正轨,这就是您现在看到该错误的原因。