javascript - 在vue.js中两个组件如何互相通信呢
PHP中文网
PHP中文网 2017-04-10 16:14:05
[JavaScript讨论组]
var vm = new Vue({
  el: '#list',
  ready: function(){
    var _this = this;
    var url = 'http://192.168.1.111:8080/api/v2/getCommonCourses';
    $.post(url,{'apiKey':apikey},function(data){
      console.log(data);
      if(data.status === 0) {
        _this.$broadcast('parent-msg',data.data);
      }
    },'json');
  },
  components: {
    courseList : List
  },
});

new Vue({
  el: '#condition',
  data: {
    isChecked: [1,0],
  },
  methods {
    common: function() {
      this.isChecked = true;
      
    },
    enterprise: function() {
      this.idChecked = false;
    }
  }
})

像这样的两个,非父子关系,当我触发common事件时,我需要刷新上面的list列表

PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
PHPz

这样的两个组件之间的通讯应该通过共同的父组件,不管是通过

  1. refs方式:parent.$refs.list.<Method>

  2. customer event方式: 先dispatch给父组件,再由父组件broadcast给子组件

  3. props方式

这里推荐props方式。那么这里应该由三个组件:

  1. FilterList (parent)

  2. Condition (child)

  3. List (child)
    并且由parent来享有数据:list和filterCondition,通过props传给child。

做了个示例

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号