[Vue.js] 筆記 - 自訂組件的 v-model

自訂組件的 v-model

若想要在使用組件時,使用 v-model 自訂想要綁定的資料,可以透過以下方式自訂 v-model 的行為

  • 預設會綁定 value,觸發的事件則是 input
<div id="app">
  {{testName}}
  <test v-model="testName"></test>
</div>
new Vue({
  el:"#app",
  data:{
    testName:"My"
  },
  methods:{
    myUpdate(value){
      this.testName = value;
    }
  },
  
  components:{
    test:{
      props:["name"],
      model:{
        prop: "name",
        event: "update",
      },
      data(){
        return {
          innerName : this.name
        }
      },
      template:`
        <div>
          <input v-model="innerName"/>
          <button @click="onClick">button</button>
        </div>
      `,
      methods:{
        onClick(){
          this.$emit("update",this.innerName);
        }
      }
    }
  }
});

1.在組件上加入 model 的屬性

  • 參數 prop 是指定要綁定哪一個 prop
  • 參數 event 是指定在父元素會監聽哪個事件名稱

2.接著在父元素就可以直接使用 v-model,讓組件自行決定要綁定的prop以及觸發的事件