body> <div id="app"> <p>{{num}}</p> <p><button @click="add">add</button></p> </div> <p><button onclick="reduce()">jian</button></p> <p><button onclick="reduceOnce()">jian</button></p> <p><button onclick="off()">off</button></p> </body> <script type="text/javascript"> var app=new Vue({ el:"#app", data:{ num:1, }, methods:{ add:function(){ this.num++; } } }); app.$on('reduce',function(){ //监听当前实例上的自定义事件。 $on在构造器外面添加事件 接收两个参数,第一个是调用时的事件名称,第二个是一个匿名方法 如果按钮在作用域外部,可以用$emit 执行 console.log('执行了reduce方法'); this.num--; }); app.$once('reduceOnceaaa',function(){ //$once 执行一次的事件 console.log('只执行一次的方法'); this.num--; }) function reduce(){ app.$emit('reduce'); //触发当前实例上的事件。附加参数都会传给监听器回调。 调用上面定义的$on } function reduceOnce(){ //执行一次的事件 app.$emit('reduceOnceaaa');//运行上面定义的 } function off(){ //关闭事件 app.$off('reduce'); // } // </script> </html>