Пробовал typeof item.type === '<type>'
также instanceof
никто не работает, как ожидалось.
Фон : я создаю генератор форм (используя VueJS).
Этоопределение формы:
formDesc: {
inline: true,
columns: 2,
labels: 'top',
disabled: false,
fields: [
{type: Array, prop: 'aprovalStatus', list: ['Pending', 'Rejected', 'Conditional', 'Approved'], label: 'Status', required: true},
{type: String, prop: 'remarks', html: true, label: 'Remarks'},
{type: Date, prop: 'approvalDate', label: 'Approval Date', format: 'DD-MM-YYYY'},
{type: Number, prop: 'deposit', decimals: 2, label: 'Security Deposit'}
]
}
У меня проблема с определением form.fields.<item>.type
на стороне генератора формы.Параметр получен нормально.Чтобы обеспечить правильный тип ввода, мне нужно знать, что такое тип form item
!
У меня есть следующий метод (из одного из поисков Google):
getType (elem) {
return Object.prototype.toString.call(elem).slice(8, -1).toLowerCase()
}
, который какЯ читаю его, должен возвращать «число», «дату» и т. Д. Несмотря на то, что я прочитал, он также возвращает «функцию», как это делает typeof item.type
.
Исходная статья
в коде генератора форм У меня есть методы для определения типа:
...
check (item) {
if (item && item.type) {
console.log('getType = ', this.getType(item.type))
return true
} else {
this.$message({message: 'Field item problem [' + !item ? 'Empty item' : 'no type prop for: ' + (item && item.label ? item.label : 'No label') + ']', type: 'warning'})
return false
}
},
isArray (item) {
if (this.check(item) && this.getType(item.type) === 'array' &&
item.hasOwnProperty('list')) {
return true
} else {
return false
}
},
...
isArray, isNumber, is Decimal
и т. Д. Используются для определения, какой компонент показывать для каждого элемента в formDesc.fields
.
Мои другие попытки были item.type.constructor === Number
Любые ссылки или решения для этого очень ценятся.