PracticU

Forms - Event Object

בלי כתוביותעם כתוביות
PracticU › קורס אנגולר 4 עם Angular - WebAPI › Forms - Event Object
מילון מושגים:
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.
Angular - מסגרת פיתוח של גוגל לבניית יישומי אינטרנט מתקדמים בצד הלקוח, מבוססת TypeScript ורכיבים.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
טופס - אזור בממשק שבו המשתמש מזין נתונים בשדות ושולח אותם, למשל טופס הרשמה או התחברות.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.
Bootstrap - ספריית עיצוב מוכנה לבניית אתרים רספונסיביים במהירות, הכוללת רכיבים ומערכת פריסה.

Forms - Event Object
ההרצאה מתחילה לעבוד עם טפסים דרך שדה כמות למוצר, ומסבירה כיצד מקבלים את הערך שהמשתמש הזין באמצעות אירועים (events) של HTML ו-Angular.
שדה הכמות
1. השדה: input מסוג number עם ערך מינימלי 1 וערך מקסימלי שמגיע ממספר היחידות במלאי של המוצר.
2. שם השדה: מאפיין name נדרש כדי שהערך ישויך לשם השדה בעת שליחה של טופס. בשלב זה לא נשלח טופס לשרת.
שמירה במוצר
1. מקום השמירה: הערך נשמר בשדה חדש באובייקט product, למשל quantity, כדי שיגיע יחד עם המוצר לסל הקניות ולשלב הצ'ק אאוט.
2. בדיקת שמות: סוג הנתונים מזהה ששם השדה product.name לא קיים, כי השדה הנכון הוא productName. ההשלמה האוטומטית עוזרת לבחור את השם הנכון.
אירוע input
1. התלבשות על אירוע: בתוך התג כותבים את שם האירוע בסוגריים עגולים, בלי המילה on, ו-Angular מפעיל פונקציה כשהמשתמש מזין ערך.
2. אובייקט האירוע: Angular מעביר לפונקציה אובייקט אירוע בשם $event. בדיבאגר רואים שהערך שהוזן נמצא ב-event.target.value.
3. עדכון: הפונקציה מציבה את הערך ב-product.quantity, והערך מופיע מיד בסל הקניות, כי הקומפוננטה האחרת קוראת מאותו מקום.
עיצוב ואירועים נוספים
1. מחלקת form-control: נותנת לשדה מראה מעוצב של Bootstrap, ונוספה מחלקה שקובעת לתיבה רוחב של 60 פיקסלים.
2. אירועים אחרים: אפשר להתלבש גם על mouseup או keyup, אך לכל אירוע יש מגבלות. השיטה החזקה יותר, מודול הטפסים של Angular, תוצג בהרצאה הבאה.
סיכום
בסיום ההרצאה ברור כיצד מקבלים ערך מתוך אירוע של שדה קלט ומעבירים אותו לאובייקט.
השיעור הבא בקורס: Angular 4 - ngModel

פרקי ההרצאה: Forms - Event Object

  1. 00:00

    הוספת שדה כמות לפרודקט

  2. 00:39

    שדה input מסוג number וה-name שלו

  3. 01:51

    הגבלת הכמות בין 1 למלאי

  4. 03:52

    טיפוס מוגדר ומניעת שגיאות כתיב

  5. 04:49

    שם השדה חייב להתאים לשרת

  6. 05:43

    התאמת השדה quantity למודל השרת

  7. 06:54

    חיבור לאירוע הזנת נתונים בטופס

  8. 08:09

    תחביר האירוע (input) של Angular

תמלול ההרצאה: Forms - Event Object

הטקסט המלא של הדקות הראשונות בהרצאה «Forms - Event Object» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם אנחנו נתחיל לעבוד עכשיו עם טפסים שזה אומר למלא שדות ולשלוח אותם לשרת איך עובדים ולידטורים איך עובדים כל מיני חוקים נניח שכחתי לרשום שם אז יש לי פה הודעה שקופצת ושכחתי לשים v אבל נתחיל ממשהו פשוט עם הכמות עם quantity להוסיף כמות להזמנה למוצר ונראה איך

  2. 00:22

    הדבר הזה עובד ואחרי זה נעבור לנושאים יותר מורכבים כמו ולידטורים אז בואו נתחיל להוסיף פה את השדה הזה זה נקרא עבודה עם טפסים מתחילים בשדה אחד פשוט להבין איך כל הסיפור הזה עובד.

  3. 00:35

    אז אנחנו רוצים להוסיף כמות לפרודקט דיטלס, נכון? לפרודקט ליסט. פה שיהיה לי גם שם לבחור, גם מחיר, ויהיה לי פה עוד איזשהו טקסט בוקס, תיבת טקסט של לבחור כמות.

  4. 00:49

    אז בואו נעשה פה אינפוט. האינפוט הזה אמור להיות חלק מטופס, אין לי פה טופס אני לא הולך לשלוח שום נתון לשרת אז אני לא עושה טופס כי זה סתם קבלת מידע בלי שליחת מידע לשרת ולא צריך טופס אז אני משתמש רק בקומפוננטה ברכיב ששייך לעולם הטפסים input type אני משתמש בnumber לחצתי טאפ טאפ פעמיים כשלחצתי טאפ טאפ פעמיים כשכתבתי מילת

  5. 01:13

    input כדי שהוא ירשום לי את כל הדבר הזה את כל הטמפלייט הזה זה נקרא snippet אוקיי אז input type number ברגע ששמתי לו number ניתן לו איזשהו name נניח ניתן לו name נעים קוונטיטי html אני אקרא לו בסדר רק כדי שנראה מה הנעים הזה עושה הנעים הזה משפיע כשאנחנו נשלח טופס לשרת עד שאנחנו לא שולחים טופס לשרת הנעים הזה לא משפיע למעשה בזמן שליחת

  6. 01:36

    טופס לשרת הוא לוקח את הנעים הזה ומשייך לו value ערך נניח אחד ברגע שהייתי לוחץ כפתור לשלוח לשרת את כל הטופס למרות שאין לי פה טופס הוא היה לוקח את הקוונטיטי הזה ושולח את הvalue ונראה את זה בהמשך value זה מה שמוצג על המסך יפה מאוד עכשיו בגלל ששמתי לו number יש לי אופציה לעשות מינימום לכתוב שהמספר המינימלי שלי

  7. 01:59

    זה 1 ולעשות לו מקסימום לתת לו ערך מקסימלי במה הערך המקסימלי שאני רוצה אני רוצה שהוא ייקח עבור כל מוצר את המלאי המקסימלי שלו תראו בתוך פרודקט בתוך אובייקט של פרודקט יש לנו פה units in stock כמה יש במלאי זה הגיע לי מהשרת ואז אני יכול לקחת את השדה הזה ולהגיד לו שהערך המקסימלי שאפשר להקיש בתיבת טקסט הזאת זה יהיה כמות במלאי יש אז יש לי דבר כזה עכשיו יש

  8. 02:26

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

  9. 02:49

    לשרת איך אני שולח דברים לשרת ב-checkout component כשאנחנו שולחים מידע לשרת עכשיו השאלה איפה אני רוצה לשמור את המידע הזה אני יכול לשמור אותו באיזשהו שדה בתוך פרודקט את הכמות שהוזמנה אני יכול ללכת למוצר פרודקט ולהוסיף פה שדה חדש שלא היה לי אותו נניח quantity to buy או להגיד שזה number ולשמור פה את הנתון הזה שהקיש לי המשתמש

  10. 03:14

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

  11. 03:34

    נקודתה עם פרודקט. ברגע שאמרנו שזה מוצר עם כל השדות, אנחנו יכולים לשים נקודה ולראות את כל השדות שלו. אתם רואים? ואם אני מחזיר הכל חזרה ומוחק את הפרודקט הזה, תראו שכשאני שם נקודה, הוא לא יודע איזה טיפוס נתונים זה, אז הוא לא יודע להגיד לי כלום.

  12. 03:50

    אתם רואים הוא לא יודע להגיד לי כלום וברגע שאני שם פה נקודתיים product ואומר לו איזה סוג נתונים זה אז כשאני אלחץ פה control רווח הוא ייתן לי את כל השדות ולכן יותר נוח לעבוד עם intelligence ועם סוג נתונים מוגדר זה גם נותן לי את העזרה וגם מונע ממני לכתוב משהו לא נכון רוצים לראות משהו לא נכון שהיה כתוב תראו היה פה כתוב

  13. 04:10

    נקודה name ואם תסתכלו טוב טוב על הפרודקט אתם תראו שאין פה נקודה name אתם רואים יש פה product name זאת אומרת היה לי פה שדה לא נכון והוא לא זיהה אותו עכשיו כששמתי לו טייפ הוא ישר כותב לי שתקשיב השדה הזה לא קיים יש פה תקלה יש פה טעות יפה מאוד אז אנחנו פה מכריזים על טייפ וברגע שבן אדם קונה דוחפים אותו לתוך הסל קניות אתם רואים

  14. 04:32

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

  15. 04:51

    עכשיו, למה אני מספר לכם את כל השרשרת הזאת? כי יש לי פה שאלה מעניינת, איך לקרוא לשדה הזה? האם לקרוא לו Quantity to Buy או לקרוא לו באיזשהו שם אחר? אז אם אנחנו שולחים את זה לשרת, בואו נראה איזה שם השרת רוצה לקבל במיפוי שהוא מקבל. הרי הוא מקבל את כל זה, את כל האובייקט הזה הוא מקבל אצלו. איזה שם יהיה לו הכי נוח?

  16. 05:11

    כי לי, בתוך ה-Client לא אכפת לי איזה שם לתת. שכבר בצד של השרת הוא יהיה מוכן לקבל. אז אנחנו הולכים פה ל-API צ'ק-אאוט בשרת ומחפשים API צ'ק-אאוט, הנה צ'ק-אאוט בשרת ורואים שכאן מגיע בעצם בפוסט המשתנה מפוסט פראמס מסוג הזה, מהקלאס הזה. בואו נראה מה יש לו בפנים.

  17. 05:31

    בפנים יש לו Customers ו-Order Details שזה למעשה סל הקניות שלי, ליסט של מוצרים. אני עושה לו Go to Definition ואני רואה שיש לו Product ID, orderid ו-quantity כמות וזאת הכמות שיש בהזמנה השדה הזה זאת הכמות ואני עושה לו קופי וככה אני אקרא לו בדיוק בשם הזה כי השרת כבר מצפה ואז אני לא צריך להחליף

  18. 05:54

    צד שרת במקום quantity to buy אני קורא לו בשם פשוט quantity כי זה מה שהצד של השרת מחכה לקבל וזה יפה מאוד אז קראתי לו quantity וזהו כי זה בצד של השרת ואז כשהוא יגיע לפה אני אוכל להגיד ש-o quantity שווה למה?

  19. 06:10

    שווה ל... בעצם אני לא צריך לעשות שום דבר שווה כי כבר ה-Quantity הזה הגיע פה ב-Order Details, מה שלא היה לפני כן. זאת אומרת שאני יכול למחוק את השורה הזאת שמכניסה ל-Quantity 1. למה אני מוחק את ה-Quantity שווה 1? כי ה-Quantity הגיע לי כבר מהקליינט.

  20. 06:24

    אוקיי, בואו נעצור את הריצה, Shift F5, ונמחק את השורה הזאת. אז אני עובר על כל המוצרים, רק משייך להם מספר הזמנה, אני לא צריך לקבוע להם כמות של 1 כי הכמות כבר מגיעה מהקליינט, שזה משהו מאוד יפה.

  21. 06:40

    חזרה לproduct list ופה בby אני רוצה שידפיס לי את הכמות שימו לב הוא מזהה שזה קוראים לזה quantity יופי אז אני צריך בתוך האינפוט לשמור את זה בשדה שקוראים לו prd.quantity זאת אומרת אני צריך פה להגיד לו דבר כזה שהאינפוט שמכניסים זה השדה הזה איך אני עושה לו את זה אני עושה לו כזה דבר אני צריך להתלבש על אירוע שקורה אצלו בפנים בזמן שמישהו מכניס אינפוט נתונים כשמישהו

  22. 07:08

    הכניס נתונים אני רוצה להתחבר אליהם ולקבל אותם ולשמור אותם במשתנה החדש שעשינו אז איך אנחנו מתחברים לתוך האירוע של הכנסת נתונים שקורה בתוך הקומפוננטה הזאת בפנים בתוך האובייקט הזה אז יש לנו פה html form events events html events אירועים של html בואו נראה אירועים שיש לנו ב html יש לנו אירועים גלובליים מה זה אומר ברמת חלון כולו ברמת כל הטאב נניח אירוע שהחלון סיים

  23. 07:37

    טעינה יש לנו אירועים ברמת טופס שזה בדיוק מה שאנחנו צריכים כי העולם הזה של שדות נמצא בעולם של טפסים ואני יכול להתלבש על אירוע on change כשהרכיב משתנה אני יכול on input כשמישהו מכניס מידע לתוך התיבה הזאת ויש פה on submit כשמישהו שולח את הטופס לשרת אז בוא נתלבש על אירוע on input ובעולם של javascript

  24. 08:00

    היינו עושים דבר כזה היינו עושים input type טקסט נניח on input כשקורה אירוע של input תפעיל את הפונקציה שלי ככה עושים את זה בעולם של javascript אנחנו לוקחים את זה ושמים את זה כאן רק בעולם של אנגולר הם אומרים תן לנו להשתלט על האירוע

  25. 08:18

    תן לנו לטפל באירוע של input אנחנו נתלבש עליו ואתה תתלבש עלינו אירוע גורר אירוע אז כדי שאני אתלבש לא על javascript אלא על אנגולר כאילו בשכבה מעל אז אני שם פה סוגריים ומוריד מילת on שמתי סוגריים והורדתי מילת on התלבשתי על אותו אירוע של input אחרי שכבר אנגולר טיפל בו והעביר לי את השליטה לפונקציה

  26. 08:39

    שלי עכשיו אנגולר מעביר לי גם יחד עם האירוע עוד איזשהו אובייקט עם מידע אקסטרה יש שם מידע לדוגמה איפה הכניסו ערך איזה ערך הכניסו אז האובייקט הזה באנגולר נקרא דולר איבנט דולר איבנט זה אובייקט שפולט החוצה האירוע של input של אנגולר והאובייקט הזה ברגע שהוא נפלט

לקורס המלא: קורס אנגולר 4 אונליין עם WebAPI

ההרצאה הקודמת: Bootstrap Grid

ההרצאה הבאה: Angular 4 - ngModel

הרצאות קשורות מקורסים אחרים

  • Object Serialization
  • Session object - חלק 1
  • המחלקה Object
  • Powershell object

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React