VueJS 从子项更改 v-model 变量
VueJS change v-model variable from child
我正在尝试通过父组件更改组件的 v-model
,但我没有得到。
在父组件中我有一个 showProgress
变量,当我将它更改为 true
时我想要它 v-model
<progress-modal>
切换到 true
.
ProgressModal.vue
<template>
<v-dialog v-model="show" persistent max-width="400">
<v-card :dark="($theme === 'dark')">
<v-card-title class="headline" v-text="title"></v-card-title>
<v-divider></v-divider>
<div class="text-xs-center mt-2">
<v-progress-circular indeterminate :size="100" :color="$color"></v-progress-circular>
<v-card-text v-text="text"></v-card-text>
</div>
</v-card>
</v-dialog>
</template>
<script>
export default {
name: 'progress-modal',
props: ['title', 'text'],
data: () => ({
show: true
}),
methods: {
}
}
</script>
我已经尝试使用
<progress-modal v-model="showProgress">
而不是 v-dialog
中的 v-model
但它不起作用 :(
要让父级使用 v-model
,您必须在子级中定义一个 value
属性并使用它。
<template>
<v-dialog v-model="value" persistent max-width="400">
...
</template>
<script>
export default {
name: 'progress-modal',
props: ['title', 'text', 'value'], // added 'value'
data: () => ({
...
</script>
这样,当你使用:
<progress-modal v-model="showProgress">
...progress-modal
中的 value
将具有父级 showProgress
的值。
将其命名为 show
要使用其他内部名称而不是 value
,您可以在组件中 declare the model
option。
<template>
<v-dialog v-model="show" persistent max-width="400">
...
</template>
<script>
export default {
name: 'progress-modal',
props: ['title', 'text', 'show'], // added 'show'
model: { // added model option
prop: 'show' //
}, //
data: () => ({
}), // in this case, remove show from data
...
</script>
将 value
属性作为 value
传递给 v-dialog
组件,并从 v-dialog
组件输入 re-emit:
//CustomDialog.vue
<v-dialog :value="value" @input="$emit('input', $event)">
</v-dialog>
...
props:['value']
并将 v-model 添加到您的父项(自定义对话框)
//Parent.vue
<custom-dialog v-model="showProgress">
我正在尝试通过父组件更改组件的 v-model
,但我没有得到。
在父组件中我有一个 showProgress
变量,当我将它更改为 true
时我想要它 v-model
<progress-modal>
切换到 true
.
ProgressModal.vue
<template>
<v-dialog v-model="show" persistent max-width="400">
<v-card :dark="($theme === 'dark')">
<v-card-title class="headline" v-text="title"></v-card-title>
<v-divider></v-divider>
<div class="text-xs-center mt-2">
<v-progress-circular indeterminate :size="100" :color="$color"></v-progress-circular>
<v-card-text v-text="text"></v-card-text>
</div>
</v-card>
</v-dialog>
</template>
<script>
export default {
name: 'progress-modal',
props: ['title', 'text'],
data: () => ({
show: true
}),
methods: {
}
}
</script>
我已经尝试使用
<progress-modal v-model="showProgress">
而不是 v-dialog
中的 v-model
但它不起作用 :(
要让父级使用 v-model
,您必须在子级中定义一个 value
属性并使用它。
<template>
<v-dialog v-model="value" persistent max-width="400">
...
</template>
<script>
export default {
name: 'progress-modal',
props: ['title', 'text', 'value'], // added 'value'
data: () => ({
...
</script>
这样,当你使用:
<progress-modal v-model="showProgress">
...progress-modal
中的 value
将具有父级 showProgress
的值。
将其命名为 show
要使用其他内部名称而不是 value
,您可以在组件中 declare the model
option。
<template>
<v-dialog v-model="show" persistent max-width="400">
...
</template>
<script>
export default {
name: 'progress-modal',
props: ['title', 'text', 'show'], // added 'show'
model: { // added model option
prop: 'show' //
}, //
data: () => ({
}), // in this case, remove show from data
...
</script>
将 value
属性作为 value
传递给 v-dialog
组件,并从 v-dialog
组件输入 re-emit:
//CustomDialog.vue
<v-dialog :value="value" @input="$emit('input', $event)">
</v-dialog>
...
props:['value']
并将 v-model 添加到您的父项(自定义对话框)
//Parent.vue
<custom-dialog v-model="showProgress">