Однако я хочу создать форму динамически с условными полями. Определение формы находится в объекте Q. Ниже приведен пример компонента Vue, использующего bootstrap-vue.
<template>
<div>
<div v-for="q of Q">
<br/>
<template v-if="q.type == 'input'">
{{ q.question }}
<em v-if="q.comment"><br />{{ q.comment }}</em>
<b-form-input v-model="q.value" :type="q.subtype" :placeholder="q.placeholder"></b-form-input>
Value: {{ q.value }}
</template>
<template v-if="q.type == 'radio'">
{{ q.question }}
<em v-if="q.comment"><br />{{ q.comment }}</em>
<b-form-group>
<b-form-radio-group buttons
stacked
v-model="q.value"
:options="q.options"/>
</b-form-group>
Value: {{ q.value }}
</template>
</div>
</div>
</template>
<script>
export default {
name: 'Questionnaire',
data() {
return {
locale: 'en',
Q: [
{
name: 'age',
value: null,
question: 'How old are you?',
placeholder: 'Your age...',
comment: 'years since you were born',
type: 'input',
subtype: 'number',
range: [18, 99],
},
{
name: 'cq',
value: null,
question: 'Conditional Question?',
type: 'radio',
options: [
{text: 'Yes', value: '0'},
{text: 'No', value: '1'},
],
if: [{object: 'age', largerthan: 30}],
},
]
};
},
methods: {
onChange: function(){
alert('test');
},
},
}
</script>
Я хочу отображать «Условный вопрос», только если возраст> 30 лет.
- В объекте Q я не могу получить доступ к
this.Q
(потому что он еще не существует). - v-on: change = "onChange" может работать, однако это противоречит сути Vue.
Я не привязан к этой структуре объекта, однако он будет получен с помощью AJAX ...
вопрос: есть ли возможность смотреть this.Q[0].value
? или другой способ сделать второй вопрос доступным только в том случае, если первый имеет определенное значение?