首页 新闻 会员 周边

各位大神,一个关于vue的问题,还请指教一下,谢谢..

0
悬赏园豆:20 [已解决问题] 解决于 2017-05-03 22:42

问题描述:

1.首先是两个平行组件;

2.组件1中显示的是一个ul li 的列表;从后台请求的数据;我把请求写在了create函数里面;

3.组件2中有个按钮,点击按钮的时候,能添加一个数据到数据库(组件1里面请求的就是这个数据);

问题来了:

 我的问题是;我在组件2中添加了数据到数据库之后,我怎么通知组件1再次请求数据库?

流年之外天空蓝的主页 流年之外天空蓝 | 初学一级 | 园豆:99
提问于:2017-04-27 22:57
< >
分享
最佳答案
0

使用vuex。见官方文档

或者简单的发布订阅

在你根页面上 window.eventBus=new Vue();

子组件1/2. window.eventBus.on(...) window.eventBus.emit(...)

收获园豆:10
czd890 | 专家六级 |园豆:14412 | 2017-04-27 23:07

感谢回复;

我使用你说的第二种方法;在组件2发生点击事件的时候用window.eventBus.emit('user',{updateUser:true});

在组件1中用window.eventBus.on('user',function (msg) {

  if (msg.updateUser === true) {

    //这里调用数据请求的方法

}

});

我不太清楚这个on方法写在哪儿?我试过写在data的return上面;以及create方法里面;

可是都不管用

流年之外天空蓝 | 园豆:99 (初学一级) | 2017-04-27 23:18

@流年之外天空蓝: 

 

on 是订阅。 写在 你子组件1的created(){}里面

czd890 | 园豆:14412 (专家六级) | 2017-04-27 23:38

@流年之外天空蓝: 

 

on 是订阅。 写在 你子组件1的created(){}里面

czd890 | 园豆:14412 (专家六级) | 2017-04-27 23:38

@calvinK: 好的;谢谢,我试试哈

流年之外天空蓝 | 园豆:99 (初学一级) | 2017-04-27 23:41
其他回答(2)
0

例举三种做法如下:

1、通过EventBus发通知;

2、通过Vuex共享数据;

3、通过共同的祖先来传递数据

 

思路如上,仅供参考。

收获园豆:10
幻天芒 | 园豆:37175 (高人七级) | 2017-04-27 23:19

好的,谢谢大神回复啊;我试一试

支持(0) 反对(0) 流年之外天空蓝 | 园豆:99 (初学一级) | 2017-04-28 00:18
0

题主的问题是设计不好,建议采用天芒说的第三种方法,就不需要EventBus或者vuex这么复杂的东西了。

一种数据统一在一个地方管理。

爱编程的大叔 | 园豆:30839 (高人七级) | 2017-04-28 16:49

大叔你好;感谢回复;

那这样的需求怎么设计会比较合理一些呢?求告知

 

支持(0) 反对(0) 流年之外天空蓝 | 园豆:99 (初学一级) | 2017-04-28 16:59

@流年之外天空蓝: 就是通过共同的祖先来传递数据啊。

列表无需取数据,窗体也无需保存数据,把这些事情都交给别人去做。

你可以看看

Vue.JS 单页应用 - 联系人管理(一) 这个系列文章

就是使用这种方法的。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2017-04-28 17:09

@爱编程的大叔: 好的,谢谢大叔..

支持(0) 反对(0) 流年之外天空蓝 | 园豆:99 (初学一级) | 2017-04-28 17:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册