摘要:這個模塊主要的原因是用在微信開發時候監聽兩個頁面之間的狀態交互比如和兩個頁面頁面有收藏項也有同樣的收藏項,監聽同一個事件收藏事件改變刷新列表數據那么在頁面操作收藏事件會觸發自身頁面回調,這時候就派上用場,在這樣聲明收藏事件改變刷新列表數據在
這個模塊主要的原因是用在微信開發時候監聽兩個頁面之間的狀態交互
比如 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");
// 瀏覽器on(eventName, fn, namespace)
參數 | 必選 | 說明 |
---|---|---|
eventName | 是 | 監聽事件名 |
fn | 是 | 回調函數 |
namespace | 否 | 命名空間 |
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 | 是 | 回調函數 |
NSEvent.once("add", (a, b) => { console.log(a, b); }); NSEvent.emit("add", 1, 2); // 1, 2 NSEvent.emit("add", 1, 2); // nothingemit(eventName, arg1, arg2, ..., object)
參數 | 必選 | 說明 |
---|---|---|
eventName | 是 | 監聽事件名 |
arg[1,2,3...] | 否 | 傳遞給回調函數的值 |
object | 否 | { 最后一個傳遞對象,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 ns2off(eventName, [string|function|array])
參數 | 必選 | 說明 | ||
---|---|---|---|---|
eventName | 是 | 監聽事件名 | ||
string | function | array | 否 | 解綁回調函數 |
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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100862.html
摘要:自制微信小程序通訊起因現在微信小程序開發基本會使用到組件的開發。隨著組件的不斷增加,使得組件之間的通訊越發頻繁。這個能使得我們在組件和頁面之間隨意通訊,您只需要按照規范注冊,使用即可,可以幫你建立任意兩個組件之間的通信通道。 自制微信小程序通訊JS 起因 現在微信小程序開發基本會使用到組件的開發。隨著組件的不斷增加,使得組件之間的通訊越發頻繁。然后,微信小程序中組件之前通訊必須通過父子...
摘要:小程序做開發的時候難免需要不同頁面之間的通訊,比如首頁打開新的頁面搜索獲取結果返回到首頁,不同頁面之間的數據交互等等。 小程序做開發的時候難免需要不同頁面之間的通訊,比如首頁打開新的頁面搜索獲取結果返回到首頁,不同tab頁面之間的數據交互等等。于是做了以下總結 當前頁面打開新的頁面 打開新的頁面可以通過 navigator 組件來實現,通過url傳參來實現,例如 搜索 在新的頁面 on...
軟件測試工具大揭秘 前言軟件測試常用軟件GitPycharmBCompareTyporaXMindNavicatSublime TextPostmanFiddlerCharlesXshellXftpJmeter 前言 ??現如今,技術發展十分迅猛,開發者只有通過不斷的學習才能跟得上時代的步伐。而為了便于學習和工作(減少996),涌現了很多優秀的開發工具用以幫助開發者提高工作效率。現在我把我工...
閱讀 1751·2023-04-25 22:42
閱讀 2202·2021-09-22 15:16
閱讀 3486·2021-08-30 09:44
閱讀 485·2019-08-29 16:44
閱讀 3304·2019-08-29 16:20
閱讀 2512·2019-08-29 16:12
閱讀 3387·2019-08-29 16:07
閱讀 666·2019-08-29 15:08