renderEvents.js 732 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. // utils/render-bus.js
  2. class RenderEventBus {
  3. constructor() {
  4. this.listeners = {}
  5. }
  6. // 注册监听
  7. $on(event, callback) {
  8. if (!this.listeners[event]) {
  9. this.listeners[event] = []
  10. }
  11. this.listeners[event].push(callback)
  12. }
  13. // 触发事件
  14. $emit(event, data) {
  15. if (this.listeners[event]) {
  16. this.listeners[event].forEach(callback => {
  17. callback(data)
  18. })
  19. }
  20. }
  21. // 移除监听
  22. $off(event, callback) {
  23. if (this.listeners[event]) {
  24. const index = this.listeners[event].indexOf(callback)
  25. if (index > -1) {
  26. this.listeners[event].splice(index, 1)
  27. }
  28. }
  29. }
  30. }
  31. const MyRenderEventBus = new RenderEventBus();
  32. export {MyRenderEventBus};