首頁 > web前端 > js教程 > 有命名空間的事件監聽器nsevent的詳細介紹(程式碼範例)

有命名空間的事件監聽器nsevent的詳細介紹(程式碼範例)

不言
發布: 2019-01-10 10:04:27
轉載
2775 人瀏覽過

本篇文章帶給大家的內容是關於有命名空間的事件監聽器nsevent的詳細介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

這個模組主要的原因是用在微信開發時候監聽兩個頁面之間的狀態交互

比如pageA 和pageB 兩個頁面, pageA 頁面有收藏項pageB 也有同樣的收藏項,監聽同一個事件

// 收藏事件改变
nsevent.on('collectChange', () => {
    // 刷新列表数据
})
登入後複製

那麼在pageA 頁面操作collect(收藏) 事件會觸發自身頁面collectChange 回調,這時候nsevent就派上用場,

在pageA 這樣宣告​​

// 收藏事件改变
nsevent.on('collectChange', () => {
    // 刷新列表数据
}, 'pageA')
登入後複製

在pageB 觸發pageA 的事件,就不會觸發自身頁面的回呼了

// 触发collectChange事件
NSEvent.emit('collectChange', params, { ns: ['pageA'] });
登入後複製

還可以在pageC 觸發pageA, pageB頁面的collectChange 事件

// 触发collectChange事件
NSEvent.emit('collectChange', params, { ns: ['pageA', 'pageB'] });
登入後複製

nsevent document

有命名空間的事件監聽器- event emitter with namespace

安裝和使用

npm i nsevent --save
登入後複製
const nsevent = require('nsevent');
登入後複製
// 浏览器
<script src="dist/nsevent.umd.js"></script>
登入後複製

#on(eventName, fn, namespace)

eventName#fnnamespace
參數 #必須 #說明
監聽事件名稱
回呼函數

#命名空間

#
NSEvent.on('add', (a, b) => {
  console.log(a, b);
});

NSEvent.on('add', (a, b) => {
  console.log(a, b, 'ns');
}, 'ns');

// 1, 2
// 1, 2, 'ns'
NSEvent.emit('add', a, b);
登入後複製
參數#必須是
once(eventName, fn)
#說明
eventName
監聽事件名稱

#fn是emit(eventName, arg1, arg2, ..., object)說明是否
回呼函數
NSEvent.once('add', (a, b) => {
  console.log(a, b);
});

NSEvent.emit('add', 1, 2);      // 1, 2
NSEvent.emit('add', 1, 2);      // nothing
登入後複製
參數 必選
eventName
監聽事件名稱 arg[1,2,3...]
#傳遞給回呼函數的值

#object否#參數必選#eventNamefunctionarray 否指定命名空間解綁 指定函數解綁
{ 最後一個傳遞對象,ns: ['ns'] } 可以指定命名空間觸發事件
NSEvent.on('fire', () => {
  console.log('fire ns');
}, 'ns');

NSEvent.on('fire', () => {
  console.log('fire ns2');
}, 'ns');

NSEvent.on('fire', () => {
  console.log('fire');
});

NSEvent.emit('fire');     // fire ns, fire ns2, fire
console.log("======");
NSEvent.emit('fire', 1, 2, { ns: [] });     // nothing
NSEvent.emit('fire', 1, 2, { ns: ['ns'] }); // fire ns, fire ns2
登入後複製
off(eventName, [string|function|array])

說明

#監聽事件名稱
#string

解綁回呼函數

#string


#function


#array

透過陣列指定命名空間或函數解綁定###############################
const NSEvent = require('../dist/nsevent.cjs');
NSEvent.on('fire', () => {
  console.log('fire ns');
}, 'ns');
NSEvent.on('fire', () => {
  console.log('fire ns');
}, 'ns');
NSEvent.on('fire', () => {
  console.log('fire1');
}, 'ns1');
NSEvent.emit('fire');   // fire ns, fire ns, fire1
console.log('==========');
NSEvent.off('fire', ['ns']);
NSEvent.emit('fire');   // fire1
console.log('==========');
NSEvent.off('fire', 'ns1');
NSEvent.emit('fire');   // none
登入後複製
######

以上是有命名空間的事件監聽器nsevent的詳細介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板