vue子組件屬性雙向綁定


我們要對子組件屬性prop進行“雙向綁定”,一般是在子組件中通過$emit(event, [...參數])觸發一個自定義的事件,這樣,父組件可以在使用子組件的地方直接用 v-on來監聽子組件觸發的事件, 並且可以在監聽函數中依次取得所有從子組件傳來的參數,如下

this.emit('eventYouDefined', arg); // 子組件觸發自定義事件

// 父組件監聽自定義事件
<Son  v-on: eventYouDefined = "functionYours" />

.sync修飾符是在vue2.3.1+版本開始使用,只要在父組件里對要雙向綁定的屬性使用.sync修飾符就可以了,不用再定義什么自定義事件。

 

此外,在學習vue自定義事件的.sync修飾符實現改變數值時發現一個問題如下

由於props的大小寫命名:fatherNum,對應不同的$emit()會有不同的效果,具體如下:

使用.sync修飾符,即

// this.$emit('update:father-num',100);  //無效
    this.$emit('update:fatherNum',100); //有效
    //......
    <father v-bind:father-num.sync="test"></father>

不使用.sync,即

this.$emit('update:father-num',100);  //有效
      //this.$emit('update:fatherNum',100); // 無效
      
      //......
     <father v-bind:father-num="test" v-on:update:father-num="test=$event" ></father>

 


免責聲明!

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



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