דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. props או קריאה לפונקציה בקומפננטת האב בvue

props או קריאה לפונקציה בקומפננטת האב בvue

מתוזמן נעוץ נעול הועבר תכנות
7 פוסטים 3 כותבים 209 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • אבייא מנותק
    אבייא מנותק
    אביי
    כתב ב נערך לאחרונה על ידי
    #1

    אני משתמש בag-grid בvue, ואני מעוניין להוסיף עמודה של כפתורי פעולות,

    הדרך שמופיעה בתיעוד שלהם היא ע"י קריא לקומפוננטה של כפתורים ככה:

    הגדרת העמודה בקומפננטה הראשית,

            {
              headerName: "פעולות",
              field: "actions",
              cellRenderer: 'ActionsButtonPeople',
              sortable: false,
              width: 330
            }
    

    כמובן לאחר ייבוא של הקומפוננטה, והגדרה שלה תחת components.

    import ActionsButtonPeople from "@/components/ActionsButtonPeople.vue";
    

    הקומפננטה ActionsButtonPeople עצמה,

    <template>
      <div>
        <button class="btn btn-sm btn-info mx-1" @click="blockDevice">חסימת מכשיר</button>
        <button class="btn btn-sm btn-accent mx-1" @click="openDevice">פתיחת מכשיר</button>
      </div>
    </template>
    
    <script>
    
    export default {
      methods: {
    
      },
    };
    </script>
    
    <style scoped>
    
    </style>
    

    וזה אכן מציג את הכפתורים, כמו שצריך (כמעט, יש איזה באג בסטייל, אבל זה לא חשוב כרגע),

    אבל אני רוצה שהפונקציות openDevice וblockDevice שנקראות בלחיצה יהיו הפונקציות שבקומפוננטת האב, איך שהצלחתי להבין זה אמור להיות עם העברת props אבל לא הצלחתי לממש את זה, ואשמח לעזרה.

    ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
    הלינקיה שלי https://abaye.co/link.html

    yossizY תגובה 1 תגובה אחרונה
    0
    • systemsS מנותק
      systemsS מנותק
      systems
      כתב ב נערך לאחרונה על ידי systems
      #2

      יש לך דוגמא באונליין ?(כמו stackblitz codesandbox)
      בעיקרון פרופס זה מאבא לבן , וemit להיפך
      כהיום יש defineModel שמשלבת את שניהם (vue3.4^)
      https://vuejs.org/guide/components/v-model
      בהצלחה רבה

      תגובה 1 תגובה אחרונה
      2
      • yossizY מנותק
        yossizY מנותק
        yossiz
        השיב לאביי ב נערך לאחרונה על ידי
        #3

        @אביי דרך אחת להשיג את זה הוא שבתוך ActionsButtonPeople תעשה emit ובקומפננטה שבו מוגדרים הפונקציות openDevice ו blockDevice תאזין לאירוע ותקרא לפונקציות.
        אולי זה מה ש @systems התכוון

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        אבייא תגובה 1 תגובה אחרונה
        2
        • אבייא מנותק
          אבייא מנותק
          אביי
          השיב לyossiz ב נערך לאחרונה על ידי
          #4

          @yossiz כתב בprops או קריאה לפונקציה בקומפננטת האב בvue:

          שבתוך ActionsButtonPeople תעשה emit

          וכיצד עושים את זה? לא הצלחתי להבין..

          ניסיתי לבקש מGPT הסבר, והוא לא ממש סיפק את זה...

          הוא הביא את זה לקומפננטת הילד (clb זה שם הפונקציה שתופעל באבא)

          <template>
            <div>
              <button @click="emitAction('Edit')">Edit</button>
              <button @click="emitAction('Delete')">Delete</button>
            </div>
          </template>
          
          <script>
          export default {
            props: {
              params: Object
            },
            methods: {
              emitAction(action) {
                // מפעילים את הפונקציה מהקומפוננטה האב
                this.params.context.componentParent.clb(action, this.params.data);
              }
            }
          };
          </script>
          
          <style scoped>
          button {
            margin-right: 5px;
          }
          </style>
          

          לא הבנתי האם componentParent זה משהו שצריך להשתנות לפי שם הקומפננטה האבא, וכן כיצד מתבצעת האזנה

          ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
          הלינקיה שלי https://abaye.co/link.html

          yossizY תגובה 1 תגובה אחרונה
          0
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לאביי ב נערך לאחרונה על ידי yossiz
            #5

            @אביי לפעמים יותר קל בלי ה"עזרה" של GTP... אפילו גוגל היה עוזר יותר

            התיעוד הרשמי קצר וקל להבין
            https://vuejs.org/guide/components/events.html#emitting-and-listening-to-events

            ובקיצור,
            בבן:

            <button @click="$emit('edit', {id:rowId})">Edit</button>
            <button @click="$emit('delete', {id:rowId})">Delete</button>
            

            ובטמפלייט של הסבא איפה שאתה יוצר מופע של האבא: תיקון בפוסט זה

            <Abba @edit="onRowEdit" @delete="onRowDelete"/>
            

            בסקריפט של האבא:

            onRowEdit({id}) { // edit row }
            onRowDelete({id}) { // delete row }
            

            נ.ב. לא כתבתי קוד VUE כבר תקופה יחסית ארוכה, ייתכן שטעיתי באיזה פרט

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            yossizY תגובה 1 תגובה אחרונה
            2
            • yossizY מנותק
              yossizY מנותק
              yossiz
              כתב ב נערך לאחרונה על ידי yossiz
              #6

              אני רואה עכשיו שהתיעוד של הספרייה ממליצה לעשות על דרך מה ש-GPT הציעה
              https://www.ag-grid.com/vue-data-grid/components/#child-to-parent-communication

              עיין שם היטב בדוגמת הקוד

              אבל זה נגד ה-best practices הרגילים של VUE. לא ככה נהוג לתקשר בין בן לאבא

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              תגובה 1 תגובה אחרונה
              1
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב לyossiz ב נערך לאחרונה על ידי
                #7

                @yossiz כתב בprops או קריאה לפונקציה בקומפננטת האב בvue:

                נ.ב. לא כתבתי קוד VUE כבר תקופה יחסית ארוכה, ייתכן שטעיתי באיזה פרט

                אכן אני חלוד... התבלבלתי

                תודה ל @צדיק-תמים שהעיר לי

                @yossiz כתב בprops או קריאה לפונקציה בקומפננטת האב בvue:

                ובטמפלייט של הסבא איפה שאתה יוצר מופע של האבא:

                <Abba @edit="onRowEdit" @delete="onRowDelete"/>

                זה לא נכון.
                בטפמלייט של האבא איפה שיוצרים את המופע של הבן מוסיפים את המטפלים הנ"ל

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                תגובה 1 תגובה אחרונה
                1

                בא תתחבר לדף היומי!
                • התחברות

                • אין לך חשבון עדיין? הרשמה

                • התחברו או הירשמו כדי לחפש.
                • פוסט ראשון
                  פוסט אחרון
                0
                • דף הבית
                • קטגוריות
                • פוסטים אחרונים
                • משתמשים
                • חיפוש
                • חוקי הפורום