這是我的設置:如何將組件數據作爲json發送到服務器?
<template>
<div id="" style="min-height: 100px">
<template v-for="(block, index) in blockList">
<component :is="block"></component>
</template>
</div>
</template>
<script>
import TextBlock from './blocks/TextBlock.vue'
import ImageBlock from './blocks/ImageBlock.vue'
export default {
data: function data() {
return {
blockList: ['text-block', 'image-block', 'text-block']
}
},
props: {
blocks: {type: Array}
},
// afterMount() {
// this.blocks.push(['text-block']);
// },
components: {
TextBlock,
ImageBlock
}
}
</script>
<style lang="scss">
</style>
所以只是爲了檢驗一切工作我手動添加一些組件:黑名單:「文本塊」,「圖像塊」,「文本塊」]
和一切呈現在頁面上罰款。但是,我不會手動添加組件,但我會讓用戶添加它們,用戶將能夠添加任意數量的組件。當前有2個組件會使用更多的組件。
當我添加可以說10個不同的組件到頁面和用戶按保存按鈕,我會怎麼去發送這個數據到服務器?我不能只將blockList數組發送到服務器,因爲這只是一個字符串數組。
我想要做的是跟蹤所有已添加的組件,然後用按鈕將所有組件及其屬性的屬性(如果我已將任何文本輸入到文本組件中)發送到服務器的json ,或者如果我已經將圖像上傳到圖像組件中,則需要將所有數據發送到服務器,以便在稍後重新加載頁面以供再次編輯時重新創建它。
那麼我怎麼能做到這一點作爲blockList:['文本塊','圖像塊','文本塊']不會做?如何保存一組組件及其所有屬性,並按下按鈕將其發送給服務器?
哇謝謝,這是很好的答案。你能澄清當v-model =「item.model」運行時會發生什麼嗎?因爲初始化時model = null,它什麼時候變成別的東西然後是null?也是這樣做的:@input =「$ emit('input',$ event.target.value)」? –
@maxit'v-model'是一個指令「對錶單輸入元素或組件的雙向綁定」。請參閱[文檔](https://vuejs.org/v2/api/#v-model)。代碼'@input = ...'將一個事件處理程序附加到'input'元素的'input'事件併發出輸入元素的當前值。由於'v-model'默認監聽'輸入'事件,'item.model'將會用輸入元素的新值更新。 – Bert
好吧,我現在得到它,模型將得到我輸入到文本框中的值,這就是爲什麼:this this.blockList.map(b => b.model)與此收集的數據結合:{{values}}給出我回到我輸入的值。但問題在於,我想不僅向服務器發送我輸入的值,還要發送組件類型以及在組件中定義的任何其他設置,例如我可以讓用戶自定義該組件的某些設置,寬度,高度等等 那麼我將如何通過一個blockList循環,並拉動每個組件及其數據? –