v-model綁定一個對象,組件內部分別負責不同字段的場景實現


我們知道v-model對於單個property雙向數據綁定非常有用,保持父子組件之間的數據傳遞和同步,但也有很多場景下希望一個組件能夠處理多個數據字段,這時就有一些小小技巧了。

https://simonkollross.de/posts/vuejs-using-v-model-with-objects-for-custom-components

比如,以下為createCustomer組件:

<template>
  <div>
    <div>
      <label>Name</label>
      <input type="text" :value="value.name" @input="update('name', $event.target.value)">
    </div>
    <div>
      <label>Type</label>
      <select :value="value.type" @input="update('type', $event.target.value)">
        <option value="Person">Person</option>
        <option value="Company">Company</option>
      </select>
    </div>
  </div>
</template>
<script>
export default {
  props: ['value'],
  methods: {
    update(key, value) {
      this.$emit('input', { ...this.value, [key]: value })
    },
  },
}
</script>

組件的使用方法:

<CreateCustomer v-model="{ name: 'John Doe', type: 'Person' }"></CreateCustomer>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM