瀏覽代碼

feature(new Spruce.off method)

Ryan Chandler 5 年之前
父節點
當前提交
88303e5253
共有 9 個文件被更改,包括 26 次插入0 次删除
  1. 0 0
      dist/spruce.js
  2. 0 0
      dist/spruce.js.map
  3. 0 0
      dist/spruce.module.js
  4. 0 0
      dist/spruce.module.js.map
  5. 0 0
      dist/spruce.umd.js
  6. 0 0
      dist/spruce.umd.js.map
  7. 6 0
      src/bus.js
  8. 4 0
      src/index.js
  9. 16 0
      tests/bus.spec.js

文件差異過大導致無法顯示
+ 0 - 0
dist/spruce.js


文件差異過大導致無法顯示
+ 0 - 0
dist/spruce.js.map


文件差異過大導致無法顯示
+ 0 - 0
dist/spruce.module.js


文件差異過大導致無法顯示
+ 0 - 0
dist/spruce.module.js.map


文件差異過大導致無法顯示
+ 0 - 0
dist/spruce.umd.js


文件差異過大導致無法顯示
+ 0 - 0
dist/spruce.umd.js.map


+ 6 - 0
src/bus.js

@@ -11,6 +11,12 @@ export default {
         this.events[name].push(callback)
     },
 
+    off(name, callback) {
+        this.events[name] = this.events[name].filter(registerCallback => {
+            return registerCallback !== callback
+        })
+    },
+
     emit(name, data = {}) {
         if (this.events[name]) {
             this.events[name].forEach(callback => {

+ 4 - 0
src/index.js

@@ -72,6 +72,10 @@ const Spruce = {
         this.events.on(name, callback)
     },
 
+    off(name, callback) {
+        this.events.off(name, callback)
+    },
+
     emit(name, data = {}) {
         this.events.emit(name, { ...data, store: this.stores })
     },

+ 16 - 0
tests/bus.spec.js

@@ -87,4 +87,20 @@ test('.watch() > can listen for changes to property', async () => {
 
     expect(fixture).toEqual('amazing')
     expect(oldFixture).toEqual('stuff')
+})
+
+test('.off() > can unregister listener', async () => {
+    let fixture = undefined;
+
+    const callback = () => {
+        fixture = 0
+    }
+
+    Spruce.on('fixture-event', callback)
+    
+    Spruce.off('fixture-event', callback)
+
+    Spruce.emit('fixture-event')
+
+    expect(fixture).toBeUndefined()
 })

部分文件因文件數量過多而無法顯示