簡體   English   中英

Vue.js無法訪問組件的方法

[英]Vue.js cannot access method of component

我有兩個Vue.js組件LobbyGame 我想使用Game作為包含所有邏輯的模型,以創建一個游戲並通過Lobby組件觸發它。

如果我運行該應用程序並單擊按鈕,則會出現以下錯誤

Uncaught TypeError: game.createGame is not a function
    at click (eval at createFunction (vue.js:9923), <anonymous>:2:76)
    at HTMLButtonElement.invoker (vue.js:1827)

如何從“ 大廳”組件訪問游戲方法? 謝謝!

    let Game = {        
        methods: {
            createGame: function () {
                console.log('createGame clicked')
            }
        }
    }



    let Lobby = {
        template: `
            <div>
                    <button v-on:click="game.createGame()">Create</button>
            </div>
        `,
        data()  {
            return {
                'game': Game
            }
        },

    }

如果要從另一個組件調用方法,則可以使用Vue.js的Event bus 。主要思想是必須在A組件中發出全局調用,並使用bus.$on在B組件中接收它bus.$on

var bus = new Vue();

Vue.component('Increment', {
  template: "#inc",
  data: function() {
    return ({count: 0})
  },
  methods: {
    increment: function(){
      var increment = ++this.count
      bus.$emit('inc', increment)
    }
  }
})

Vue.component('Display', {
  template: "#display",
  data: function(){
    return {count: 0}
  },
  created: function(){
    bus.$on('inc', function(num){
       this.count = num    
  }.bind(this));
  }
})


vm = new Vue({
  el: "#example",
})

https://jsfiddle.net/emwcoy36/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM