我正在将一个大型代码库(我没写过)从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'甚至不在这里。这怎么可能有效?
答案 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中,他们添加了更好的错误消息,以帮助您保持正常运行,这就是您现在看到错误的原因。