VUE的父子組件內容獲取和事件綁定代碼


父網頁代碼

<template>
  <div class="hello">
   <h1 :class="ff" @mouseover="add()">這是首頁</h1>
   <div>
   <aaa :ttt="test" @aa="funck()"></aaa>
   </div>
   </div>
</template>

<script>
import COPY from './COPY.vue'
export default {
  name: 'HelloWorld',

  data () {
    return {
      test:'這是父組件的變量',
      ff: ''
    }    
  },

  methods:{
    funck: function(value) {
     this.ff='f'
    },
    add: function() {
      this.test='f'
    }
  },

  components: {
    aaa:COPY
  }
}
</script>

<style scoped>
  .f{
    background-color: aqua
  }
</style>

子網頁代碼

<template>
  <div class="hello">
   <h1 :class="ttt">這是一個可以COPY的固定頁面 </h1>
   <p @click="fuck()"> {{ttt}}</p>
   <div @click="kkk()" :class="ttt">什么鬼巴西龜</div>
   </div>
</template>

<script>
export default {
  name: 'COPY',

  data () {
    return {
      ooo:'這是子組件的變量'
    }    
  },

  props:{
    ttt:{
      default:0,
      type:Number
    }
  },
  
  methods:{
    fuck: function() {
      this.$emit('aa')
    },
    kkk: function() {
      this.$emit('mouseover')
    }
  }
}
</script>

<style scoped>
  .f{
    background-color:cadetblue
  }
</style>

詳細說明

要將父組件中的變量傳遞給子組件:在子組件中完成props方法中的變量命名后

例:父組件中--><div>
             <aaa :ttt="test">這里的ttt就是子組件的變量命名,獲取父組件的test變量</aaa>
           </div>

子組件中-->props:{       固定寫法
        ttt:{             也可以是空對象,以下的變量值都不寫
              default:0         設置默認值default為0
              type:Number       這里一旦定義值的類型,如果不是Number等就會報錯
        }
      }
      <p> {{ttt}}</p>       這里輸出ttt的值,也就是父組件中的test值

 

要將子組件的變量傳遞給父組件:在子組件中准備好觸發事件和方法

例:子組件中--><p @click="fuck()">當點擊這里后觸發方法fuck()</p>
      methods:{
    
        fuck: function() {
      
        this.$emit('bb',this.ccc,this.aaa)     命名一個事件名bb,同時帶上當前網頁的變量ccc和aaa
          }
   父組件中--><p @bb="test()"></p> 跟子組件事件命名相同,子組件觸發事件后運行這里的test()方法
      methods:{

        test: function(value1,value2) {     命名value變量1和2,如果子組件參數多個則命名多個,順序要對應

        console.log(value1)                 輸出value變量,即子組件的變量ccc 

        this.ff=value2                      改變當前頁面的變量ff的值等於帶過來的參數aaa
          }

要點擊子組件的內容觸發父組件的事件:在methods中命名一個變量和方法后,固定寫法this.$emit

例:子組件中--><p @click="add()">當點擊這里后觸發方法add()</p>
       methods:{
    
        add: function() {
      
       this.$emit('aa')      命名一個事件名aa,方法運行后到父組件找到相同的事件名
          }
    
    父組件中--><p @aa="funck()"></p> 跟子組件事件命名相同,子組件觸發事件后運行這里的funck()方法
       methods:{
    
        funck: function() {
      
        this.ff='改變的值'       改變當前頁面的變量ff的值
          }

 


免責聲明!

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



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