在ExtJS 6.2中,我如何定义一个模型字段,可以是不同的值,例如,字符串或布尔值,并验证它可以是true
,false
或字符串?
在下面的模型中,value
可以是字符串也可以是布尔值。
Ext.define('my_model', {
extend : 'Ext.data.Model',
fields: [{
name : 'name',
type : 'string',
unique : true
}, {
name : 'value',
convert(value) {
switch (value) {
case 'Y': return true;
case 'N': return false;
default : return value;
}
}
}],
validators: {
value: {
// How do I validate it?
}
}
});
您可以使用auto字段和validate属性:
Ext.define('my_model', {
extend: 'Ext.data.Model',
fields: [{
name: 'name',
type: 'string',
unique: true,
}, {
name: 'value',
type: 'auto',
convert(value) {
switch (value) {
case 'Y':
return true;
case 'N':
return false;
default:
return value;
}
},
validate: function (value) {
return ['boolean', 'string'].indexOf(typeof value) !== -1;
}
}]
});
Ext.application({
name: 'Fiddle',
launch: function () {
var myModel = Ext.create('my_model', {
name: 'Some name',
value: 'N'
});
console.log(myModel.getData());
console.log(myModel.isValid());
}
});