1 回答

TA貢獻1805條經驗 獲得超10個贊
<input>提交表單時,瀏覽器應包含表單中的任何元素。瀏覽器不會關心它是否<input>位于 Vue 組件內。
對于還沒有<input>(或其他合適的表單元素)的組件,您可以添加隱藏輸入<input type="hidden">來保存值。
如果您要包含的組件是第三方組件,那么您將無法直接添加隱藏輸入。但是,您仍然可以使用包裝器組件來添加它。下面的示例說明了如何處理該場景。
const thirdPartyComponent = {
template: `
<button
@click="onClick"
type="button"
>
Increment {{ value }}
</button>
`,
props: ['value'],
methods: {
onClick () {
this.$emit('input', this.value + 1)
}
}
}
const myCustomFancyVueComponent = {
template: `
<div>
<third-party-component v-model="counter" />
<input type="hidden" :value="counter">
</div>
`,
components: {
thirdPartyComponent
},
data () {
return {
counter: 4
}
}
}
new Vue({
el: 'form',
components: {
myCustomFancyVueComponent
}
})
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>
<form action="/users" accept-charset="UTF-8" method="post">
<input type="email" name="user[email]">
<input type="password" name="user[password]">
<my-custom-fancy-vue-component></my-custom-fancy-vue-component>
<input type="submit" value="Sign up">
</form>
- 1 回答
- 0 關注
- 113 瀏覽
添加回答
舉報