91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue中如何實現父子組件數據雙向綁定

發布時間:2021-09-13 16:31:16 來源:億速云 閱讀:329 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Vue中如何實現父子組件數據雙向綁定,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

    實現思路:

    父 向 子 組件傳值:使用 props 屬性。( props property[屬性] 的復數簡寫 )
    子 向 父 組件傳值:使用自定義事件。

    一、父子組件單向傳值

    1、父向子傳值

    父向子組件傳值,子組件接收到數據之后,保存到自己的變量中。

    //父組件寫法 
    <cld :numP="num" ></cld> 
     
    //子組件定義以及數據 
    components:{ 
     cld:{ 
      template:'#child', 
      props:{ 
       numP:Number 
      }, 
     } 
    } 
     
    //子組件內容 
    <template id="child"> 
     <div> 
      {{ numP }} 
     </div> 
    </template>

    props 用于接收父組件傳過來的值,props 的寫法有很多種,具體如:

    //方式1 :  直接接收數據 
    props: [ 'numP' ] 
     
    //方式2: 加類型限制 
    props: [ 
     numP: Number 
     ]  
     
    //方式3:添加默認值 
    props: [ 
     numP: { 
      type:Number, 
      default:0 
      } 
    ]  
     
    //方式4:是否必須值限制 
    props: [ 
     numP: { 
      type:Number, 
      default:0, 
      require:true //添加必須值,不傳此值會報錯 
     } 
    ]  
     
    //方式5:采用對象形式 
    props: { 
     numP: { 
      type:Number, 
      default:0, 
     } 
    }

    2、子向父傳值

    子向父組件傳值,主要通過自定義事件進行傳值,具體實例如下:

    // 父組件內容 
    <div> 
     子組件獲取到的數據{{getNum}} 
     <cld :numb="num" @accept="getNumC"></cld> 
    </div> 
     
    //父組件方法 
    methods:{ 
     getNumC(data){ 
      this.getNum = data //接收子組件傳的數據 
     } 
    }, 
    //子組件定義 
    components:{ 
     cld:{ 
      template:'#child', 
      data(){ 
       return{ 
        numC:1314 //子組件數據定義 
       } 
      }, 
      mounted(){ 
        this.$emit( 'accept' , this.numC ) // 觸發自定義事件 
       } 
      } 
    },

    二、父子組件數據雙向綁定

    Vue 的數據都是單向流動的,而且 vue 中從來就沒有任何的雙向綁定,v-model 實現的雙向綁定只是語法糖而已。

    方式1:利用 watch 實現父子組件的數據雙向綁定,具體實例如下:

    <div id="app"> 
     數據<br>{{num}} 
     <input type="text" v-model="num"><br> 
     <cld :numb="num" @accept="getNumC"></cld> 
    </div> 
    //子組件內容 
    <template id="child"> 
     <div> 
      數據<br>{{childNum}} 
      <input type="text" v-model="childNum" /> 
     </div> 
    </template> 
     
      <!-- 父子組件通信 --> 
    const app = new Vue({ 
     el:'#app', 
      data:{ 
       num:'520', 
       }, 
      methods:{ 
       getNumC(data){ 
        this.num = data 
       } 
      }, 
      components:{ 
       cld:{ 
        template:'#child', 
        props:{ 
         numb:String 
        }, 
       data(){ 
        return{ 
         childNum:0, 
        } 
       }, 
      watch:{ 
       numb:function(){ 
        this.childNum = this.numb 
       }, 
       childNum:function(){ 
        this.$emit('accept',this.childNum) 
        } 
       }, 
      mounted(){ 
       this.childNum = this.numb 
       } 
      } 
     }  
    })

    方式2:.sync 修飾符實現雙向綁定

    在vue 1.x 中的 .sync 修飾符所提供的功能。當一個子組件改變了一個帶 .sync 的 prop 的值時,這個變化也會同步到父組件中所綁定的值。這很方便,但也會導致問題,因為它破壞了單向數據流。(數據自上而下流,事件自下而上走)

    <cld :numb.sync="num" ></cld> 
    //會擴展為: 
    <cld  :numb="bar"  @update:numb=”val => bar = val”/>

    當組件需要更新 numb 的值時,需要觸發更新事件:

    this.$emit("update:numb", newValue );

    使用具體實例如下:

    // 父組件 
    <Father :foo.sync="foo"></Father> 
     
    //子組件 
    props: ['foo'], 
    data() { 
      return { 
       newFoo: this.foo; 
       } 
    }, 
    methods:{ 
     add:function(){ 
      this.newMsg=10; 
      this.$emit('update:foo',this.newFoo); 
     } 
    }

    關于“Vue中如何實現父子組件數據雙向綁定”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    vue
    AI

    贺州市| 成都市| 遵化市| 南皮县| 建阳市| 澳门| 平泉县| 乐山市| 资源县| 锦屏县| 高青县| 鄄城县| 浦县| 米脂县| 江城| 金阳县| 中宁县| 乐清市| 牡丹江市| 涟水县| 图木舒克市| 军事| 西昌市| 泸州市| 乡城县| 锡林浩特市| 望奎县| 天柱县| 迁安市| 九龙城区| 河池市| 巍山| 磐石市| 莲花县| 延川县| 广平县| 武夷山市| 金秀| 交口县| 同江市| 读书|