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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
7 פוסטים 3 כותבים 399 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • אבייא
    אבייא
    אביי
    כתב ב נערך לאחרונה על ידי
    #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 | קטלוג מוצרים
    abaye.co

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

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

      תגובה 1 תגובה אחרונה
      2
      • אבייא אביי

        אני משתמש ב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 אבל לא הצלחתי לממש את זה, ואשמח לעזרה.

        yossizY
        yossizY
        yossiz
        כתב ב נערך לאחרונה על ידי
        #3

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

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
        👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

        אבייא תגובה 1 תגובה אחרונה
        2
        • yossizY yossiz

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

          אבייא
          אבייא
          אביי
          כתב ב נערך לאחרונה על ידי
          #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 | קטלוג מוצרים
          abaye.co

          yossizY תגובה 1 תגובה אחרונה
          0
          • אבייא אביי

            @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 זה משהו שצריך להשתנות לפי שם הקומפננטה האבא, וכן כיצד מתבצעת האזנה

            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 yossiz

                @אביי לפעמים יותר קל בלי ה"עזרה" של 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
                yossizY
                yossiz
                כתב ב נערך לאחרונה על ידי
                #7

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

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

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

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

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

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

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

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

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
                👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

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

                שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

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

                בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

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


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

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

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