Vue js使用vm。$ on监听默认事件

时间:2017-06-15 13:43:25

标签: javascript vue.js vuejs2

有趣的是,我可以用vm。$ on来监听默认事件吗?为什么不可能呢?

这是我的HTML

<div id="app">
    <div @click="clickListener">dsdsd</div>
</div>

这是我的剧本

let vm = new Vue({
            el:"#app",
            methods:{
                clickListener()
                {
                    console.log("called clickListener")
                }
            }
        })

        vm.$on('click',function(){
            console.log("hello")
        })

1 个答案:

答案 0 :(得分:0)

你需要先发出一个你想要收听的事件,使用vm。$ emit()如下:

let vm = new Vue({
  el:"#app",
  methods:{
    clickListener() {
      this.$emit('eventName', 'sample-value');
    }
  }
})

vm.$on('eventName', function(value){
  console.log(value); // 'sample-value'
});
编辑:尝试这样的事情:

const vm = new Vue({
  el: '#app',
  mounted() {
    const app = document.getElementById('app');
    app.addEventListener('click', (event) => {
      this.$emit('click', event);
    });
  }
});

vm.$on('click', (event) => {
  console.log('click', event);
});
相关问题