בפוסטים הקודמים כתבתי רק על האזנה לאירועים של NodeBB בצד הלקוח.
אלא שניתן גם ליזום אירועים, וכך ניתן לבצע פעולות בממשק בצורה נקיה, ללא צורך בדימוי לחיצות ושאר שטיקים מכוערים...
לדוגמה אם אני רוצה לפתוח נושא חדש (זה רק דוגמה, ספציפית בזה יש את app.newTopic), אני לא צריך לדמות לחיצה על כפתור פתח נושא, ואז לדמות לחיצה על בורר הקטגוריות, וכן הלאה... 😣
אני יכול פשוט לקרוא לאירוע action:composer.topic.new (מאיפה יש לי אותו? מהתיעוד הרשמי) עם הפרמטרים הנכונים,
ואיך אני יידע איזה פרמטרים? 🤔 פשוט מאזינים להוק הרלוונטי ומפעילים אותו בממשק, ורואים בקונסולה איזה פרמטרים הועברו אליו... אפשר גם להיעזר בסקריפט שהבאתי בפוסט הקודם 🙂
לדוגמה כדי להאזין להוק של יצירת נושא:
$(window).on('action:composer.topic.new', (event, data) => {
console.log(data);
});
אם תאזינו כך להוק של פתיחת נושא, תוכלו לראות שהוא מקבל אובייקט שמכיל cid ומערך של tags, שבמקרה הזה הם ריקים:
{
"cid": 0,
"tags": []
}
וממילא ברגע שנקרא להוק בצורה הזאת:
$(window).trigger('action:composer.topic.new', {
cid: "9",
tags: [
'test', 'test2'
]
});
נראה שנפתח מייד חלון כתיבת נושא חדש, כאשר ב"קטגוריה" כבר נבחרה קטגוריה מספר 9 - בניה ושיפוצים, ובמקום המיועד כבר הוכנסו התגיות test וtest2:
fb1681dd-ada4-4a4d-b197-9bba5e29f2a0-image.png
ותן לחכם ויחכם עוד... 😊