vue组件通信

代码就是网上的demo:
<div id="app4">

    <display></display>
    <increment></increment>
</div>
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/axios@0.12.0/dist/axios.min.js"></script>
<script src="https://unpkg.com/lodash@4.13.1/lodash.min.js"></script>
<script>
    var bus=new Vue();
    Vue.component('display',{
        template:'<button @click="add">+</button>',
        data:function(){
            return {count:0}
        },
        methods:{
            add:function(){
                bus.$emit('inc',this.count+1)
            }
        }
    })
    Vue.component('increment',{
        template:'<span> Click: {{c}} times</span>',
        data:function(){
            return {c:0}
        },
        created:function(){
            var _this=this;
            bus.$on('inc',function(num){
                _this.c=num
            })
        }
    })
    vm=new Vue({
        el:'#app4'
    })
</script>

为什么这个click触发一次之后就不再响应了,加到1后就不再增加了?
阅读 1.8k
2 个回答

因为每次'display'组件触发的传值都是1啊,所以'increment'组件拿到的值就只能是1。
不是不响应,而是每次结果都一样。

add:function(){

this.count++;
bus.$emit('inc',this.count)

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题