subscribe 事件订阅

适用于单页跨组件,全局事件触发

subscribe 使用

属性说明
$on订阅监听(订阅 Id,触发事件)
$emit发送订阅(订阅 Id,发送的数据)
keys所有订阅的事件 Id

Vue 组件订阅

  • 监听组件
import onMounted from 'vue';
import { subscribe } from 'quick.lib';
export default {
  setup() {
    // 接收事件订阅
    let onId = 'on-form-item-add';
    subscribe.$on(onId, (resp) => {
      console.log('接收订阅名:', onId, resp);
      //返回给发送事件
      return { finish: true, data: { named: onId, resp } };
    });

    onMounted(() => {
      // 组件加载完毕发送事件
      subscribe.$emit('on-form-item-add', {
        cmd: 'msg',
        title: '加载完了',
      });
    });
  },
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

subscribe 事件订阅

>{}
// import { Subscribe } from 'quick.lib';

/**
 * 全局组件事件订阅
 */
const subscribe = new Subscribe();
// 自定义事件订阅名
const subscribeNamed = 'on-sub-test';

// 订阅事件事件监听
subscribe.$on(subscribeNamed, function (resp) {
  //console.log('ubb', resp);
  alert('收到消息\r\n' + JSON.stringify(resp));
  switch (resp.cmd) {
    case 'clear':
      // 清除全部事件
      subscribe.clear();
      break;
  }
  //返回给发送事件
  return { finish: true, data: { named: subscribeNamed, resp } };
});

// 全局组件keys
let resp = { keys: subscribe.keys() };
// 发送事件
resp.send = subscribe.$emit(subscribeNamed, {
  cmd: 'msg',
  title: '清除所有监听',
});

// resp.send = subscribe.$emit(subscribeNamed, {
//   cmd: 'clear',
//   title: '清除所有监听',
// });

return resp;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

subscribe 订阅名

>{}
/** 事件订阅 */
// import { Subscribe } from 'quick.lib';
/**
 * 全局组件事件订阅
 */
const subscribe = new Subscribe();
// 全局组件keys
let _keys = subscribe.keys();

return _keys;
1
2
3
4
5
6
7
8
9
10

Last Updated: