1. 程式人生 > >筆記(三) Vue父子組件傳值

筆記(三) Vue父子組件傳值

one pan 怎麽 事件 scrip round methods click back

父組件向子組件傳遞數據

Vue中的父組件要想向子組件傳遞值的化需要通過屬性的方式傳遞

<body>
  <div id="root">
    <counter :count="1"></counter>
    <counter :count="2"></counter>
  </div>
  <script>
  var counter={
    props:["count"],
    template:"<div>{{count}}</div>"
  } 
  var vm
=new Vue({ el:"#root", components:{ counter:counter } }) </script> </body>

就像這樣 在父組件上綁定一個count屬性,子組件通過props來接收count屬性所傳遞的值,然後通過插值表達式插入到子組件內

當我們想操作傳遞過來的數據的時候,我們就要註意了父組件傳遞給子組件數據時,因為單向數據流的關系,子組件是不能直接修改傳遞的數據的那我們要怎麽辦呢?

var counter={
    props:["count"],
    data:function
(){ return { number : this.count } }, template:"<div @click=‘handleClick‘>{{number}}</div>", methods:{ handleClick:function(){ this.number++ } } }

我們可以在子組件定義一個number來接這個count,我們直接去操作這個number就可以不影響父組件了

子組件向父組件傳遞數據

子組件向父組件傳遞數據是通過事件的方式,父組件通過監聽這個事件,就可以獲取數據了

handleClick:function(){
        this.number++
        this.$emit("change",1)
      }

我們通過$emit 向外觸發一個事件,而且這個事件後面可以攜帶一個或者多個參數

然後我們在父組件綁定一個事件 ,這個事件名就是$emit向外觸發的事件.

<div id="root">
    <counter :count="0" @change="handleChange"></counter>
    <counter :count="0" @change="handleChange"></counter>
    <div>{{total}}</div>
  </div>

然後我們去根組件裏面綁定這個事件

handleChange:function(e){
        this.total+=e
      }

這個e就是前面change事件攜帶的參數,我們就完成了子組件向父組件傳遞數據

  

筆記(三) Vue父子組件傳值