npm.io
2.0.1 • Published 5 years ago

snow-bus

Licence
ISC
Version
2.0.1
Deps
0
Size
3 kB
Vulns
0
Weekly
0

订阅发布模式

/**

  • Created by 蓝枫 on 2019/5/21.
  • @desc 订阅发布模式。 */

存放 订阅消息

let _listeners = {};

let Bus = {

添加 订阅

watch(target, callback) { if (!_listeners[target]) { _listeners[target] = []; } _listeners[target].push(callback); },

发布信息

trigger(target, ...args) { if (!_listeners[target]) return false; _listeners[target].forEach(listener => { // listener.apply(this, args) // 20210419 改动 listener(args) }) },

移除订阅

unwatch(target, callback) { if (!_listeners[target]) return false; if (!callback) { _listeners[target] = []; } else { _listeners[target].forEach((listener, index) => { if (listener == callback) _listeners[target].splice(index, 1); }) } } }

module.exports = Bus;

使用

npm install snow-bus --save

vue项目中 main.js 引入 import Bus from 'snow-bus'

Vue.use(Bus)

组件中使用 订阅 this.$bus.watch("ADD_TODE", this.addTodo); 发布 this.$bus.trigger('ADD_TODE',item);