קורס Front-End Web Development שיעור תרגול: תחביר בסיסי באנגולר


זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/html5-web-development/lessons/angular-syntax-lab

בשאלה של היחידות זמן אני מעוניין לבנות פונקציה אחת שתחשב לכל התיבות את הזמן … אבל אני צריך לדעת מי הפקד שהפעיל אותה - כדי שאדע לחשב את האחרים ? שמתי לב שבאנגולר לא מעבירים כלום באירועים כפרמטר

אין בעיה להעביר ערכים בהפעלת פונקציה גם מתוך ה HTML למשל:

<button ng-click="vm.click(60)">Click Me</button>

יכולת נוספת שאולי תעזור כאן היא Getters and Setters. אפשר לקרוא עליהם כאן:

אני רוצה להעביר את הפקד עצמו שיצר את האירוע ? לא פרמטר קבוע - כמו כל אירוע ב- JS ששולח את הפרמטר event ובתוכו יש מאפיין target של מי שיצר את האירוע

לא מצליח להבין למה זה לא עובד - הוא לא מזהה משום מה שמודבר באנגולר

לגבי משימה 4 - אני הוספתי כפתור שכאשר לוחצים עליו אז הוא בונה את המערך כל פעם מחדש ומעדכן את המשתנה - זה נכון לעשות את זה כך

  1. כי לא שמת את ה JavaScript של אנגולר

  2. כי הגדרת ה Controller שלך לא משתמשת בכתיב ה Controller As

זו הגירסא שעובדת:

לגבי העברת הפקד עצמו בהחלט אפשרי. יש משתנה מיוחד בשם $event שאתה יכול להעביר ל ng-click למשל כך:

<button ng-click="vm.go($event)">go</button>

ואז בתוך הגדרת הפונקציה ב Controller אפשר לקבל הרבה פרטים על האירוע דרך משתנה זה. שים נקודת עצירה בכניסה לפונקציה go ותראה איזה שדות יש באוביקט ה event.

לא הבנתי למה התכוונת בפיתרון של משימה 4. אולי תדביק כאן קודפן שיהיה קל לדבר על זה?

עשיתי את $event ושמתי נקודת עצירה החזיר לי לא מוגדר בכלל ?

יכול לשים קודפן של מה שעשית?

כן ברור - ברוך הבא לאנגולר :slight_smile:

לא לכל סוגי האירועים יש Event Object, לדוגמא ל ng-change אין Event ובגלל זה זה לא עובד לך.

במקרה שלך אפשר להעביר ערך אחר בתוך הפונקציה שיעזור להבין איזה כפתור גרם לשינוי (למשל להעביר את האותיות h, m ו-s). במקרים אחרים צריך למצוא פיתרונות שמתאימים להם.

לייק 1