vue中組件間的傳參


1.父傳子

  父組件准備一個數據,通過自定義屬性給子組件賦值,進行傳遞

  在子組件中通過 props 屬性來接收參數

<body>
    <div id="app">
        <son passdata="msg"></son>
    </div>
</body>
<script>
    Vue.component('son', {
        template: '<div>父組件的數據為:{{ passdata }}</div>',
        props: ['passdata']
    })
    new Vue({
        el: '#app',
        data: {
            msg: '父組件數據'
        }
    })
</script>

 

2.子傳父

 

  在子組件准備一個數據,通過 this.$emit('自定義事件', '參數'),進行傳遞。this.$emit 相當於要執行子組件的自定義事件,並且傳入參數
  在父組件中給子組件注冊好自定義事件,並且實現這個方法,就可以得到參數了。<son @自定義事件="getval">

<body>
    <div id="app">
     //myevent是子組件中的事件 <son @myevent='getVal'></son> </div> </body> <script> Vue.component('son', {
     //①通過事件觸發passval方法 template: `<div>給父組件傳參<button @click="passval">傳參</button></div>`, data(){ return { son: 'son數據' } }, methods: { passval(){
          //②執行子組件中的myevent事件,通過$emit進行傳遞(this.son為傳遞的數據) this.$emit('myevent', this.son) } } }) new Vue({ el: '#app', methods: {
       //③value就是傳遞過來的數據 getVal(value){ console.log(value) } } }) </script>

 

3.並列組件傳參

  創建一個公用的 bus (vue 實例)  var vm = new Vue()

  在 A 組件傳入數據  vm.$emit('passval', this.name)

  在 B 組件接收數據  vm.$on('passval' ,function(value){})

 

<body>
    <div id="app">
        <coma></coma>
        <comb></comb>
    </div>
</body>
<script>
  //①創建一個公共實例 var vm = new Vue() Vue.component('coma', {
     //通過事件觸發 myclick方法去傳參 template: `<div><button @click="myclick"></button></div>`, data() { return { name: 'coma' } }, methods: { myclick: function(){
          //向公共實例傳入數據 vm.$emit('passval', this.name) } } }) Vue.component('comb', { template: `<div>comb</div>`, mounted() {
        //接收數據 vm.$on('passval', function(value){ console.log(value) }) } }) new Vue({ el: '#app' }) </script>

  


免責聲明!

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



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