鍍金池/ 問答/HTML/ vue更新表單的做法

vue更新表單的做法

需要實現(xiàn)一個更新的表單,namedpipeline是父組件傳入的一個對象,需要把這個對象的每個屬性都填入到初始化表單

首先在data里面初始化一個空的form對象,然后在本組件加載的時候,用namedpipeline的屬性挨個初始化。最后提交的時候,從當前綁定input窗的form數(shù)據(jù)提交,感覺自己的做法有些繁瑣,有沒有更好的方式。

<template>
<b-form @submit="onSubmit" v-if="show">
    <b-form-textarea id="descText1"
                         v-model="form.description">
    </b-form-textarea>
    <input v-model="form.date_published"></input>
</b-form>
    <b-btn size="sm" variant="primary" @click="onSubmit">Save<b-btn>
  </b-modal>
</template>
<script>
  export default {
    props: ['namedpipeline'], // '從父組件傳入的數(shù)據(jù),類型為對象
    data () {
      return {
        form: {
          description: '',
          date_published: '',
          series: ''
        }
      }
    },
    mounted () {
      this.init()
    },
    methods: {
      init () {
        this.form.description = this.namedpipeline.description
        this.form.date_published = this.namedpipeline.date_published
        // 初始化更新的form表單,填入數(shù)據(jù),這里感覺自己沒處理好,有些蠢,難道對象里面的每個屬性都需要這么初始化么?
      },
  onSubmit (evt) {
        evt.preventDefault()
        // 處理提交數(shù)據(jù)
        alert(JSON.stringify(this.form))
      }
   }  
回答
編輯回答
伴謊

this.form = this.namedpipeline不就行了,或者for in循環(huán)啊

2017年4月28日 07:52
編輯回答
淚染裳

首先props值不能改,需要重新賦值是對的
this.form = this.namedpipeline
其次

<b-form @submit="onSubmit" v-if="show">
    <component v-for="item in form"
               :is="item.type"  //定義你是哪個組件
               v-model="item.model" //定義你組件綁定的model名字>                
    </component> 
</b-form>
最后把v-model的值傳上去就ok了
2017年10月23日 23:49