从动态方案在表单中创建条件的最佳方法是什么?
我正在使用一个json列表来设置我的表单,在我的json列表中,我想添加一个函数,在那里我可以验证一些逻辑来检查字段是否应该可见/必需,或者例如用表单中的其他值来验证该值。
这是我的json表单的一部分:
..
"colour": {
compType: 'radiobox',
label: 'Colour',
options: [
{ value: 'red', label: 'Red' },
{ value: 'green', label: 'Green' },
{ value: 'blue', label: 'Blue' },
],
},
"model" : {
condition: testCondition, <----(Function which returns true if the field colour is red)
compType: 'select',
label: 'Role model',
subLabel: 'Who do you look up to?',
options: [
{ value: '', label: 'Select one', disabled: true },
{ value: 'captain-america', label: 'Steve Rogers/Captain America' },
{ value: 'iron-man', label: 'Tony Stark/Iron Man' },
{ value: 'thor-odinson', label: 'Thor Odinson' },
{ value: 'the-hulk', label: 'Bruce Banner/The Hulk' },
{ value: 'black-widow', label: 'Natasha Romanoff/Black Widow' },
{ value: 'hawkeye', label: 'Clint Barton/Hawkeye' },
],
},
..
然后我通过我的模板浏览它。
...
<q-select v-else-if="prop.compType === 'select' && prop.condition"
outlined
v-model="dataRef[key]"
:options="prop.options"
:label="prop.label"
>
</q-select>
...
这个函数应该看起来像这样:
const testCondition = () => {
//how can I reach my ref Form data to check if the field needs to be visible
}
但是因为表单还没有初始化,我得到了一个“初始化前无法访问”的错误。有人能帮助我走上正确的道路吗?对我来说已经足够了。
PS:我知道有图书馆在做这件事,但我宁愿自己去学习和理解它。
1条答案
按热度按时间xqk2d5yq1#
请看下面的代码片段(您可以将
testCondition
函数扩展到所有需要的情况):