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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. אנגולר 1 - Direcrive להמרת תאריך

אנגולר 1 - Direcrive להמרת תאריך

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

    יש לי בעיה שכבר נדונה בעבר.
    אני מקבל מהשרת תאריך בפורמט מסויים.
    (2018-04-03T21:00:00.000Z)
    אני רוצה לעשות בינדינג לתוך אלמנט input מסוג date.
    הוא כמובן זורק שגיאה שהוא מצפה לקבל תאריך.
    אני יכול לעשות המרה בסקופ. אבל רציתי להשתמש ב directive.
    מצאתי משהו:

    app.directive('dateFormat', function () {
    return {
        require: 'ngModel',
        link: function (scope, element, attr, ngModelCtrl) {
            //Angular 1.3 insert a formater that force to set model to date object, otherwise throw exception.
            //Reset default angular formatters/parsers     
            ngModelCtrl.$formatters.length = 0;
            ngModelCtrl.$parsers.length = 0;
        }
    }; 
    

    וב HTML כך:

       <input type="date" ng-model="chotamProfile.request_closedRoomExp"  date-format/>
    

    זה לא עובד. אין לי ניסיון ב Directive. מישהו יכול לעזור (הרעיון הוא שאני רוצה ליצור Durective על אלמנט input type=date). תודה.

    zvizviZ תגובה 1 תגובה אחרונה
    0
    • מנצפךמ מנצפך

      יש לי בעיה שכבר נדונה בעבר.
      אני מקבל מהשרת תאריך בפורמט מסויים.
      (2018-04-03T21:00:00.000Z)
      אני רוצה לעשות בינדינג לתוך אלמנט input מסוג date.
      הוא כמובן זורק שגיאה שהוא מצפה לקבל תאריך.
      אני יכול לעשות המרה בסקופ. אבל רציתי להשתמש ב directive.
      מצאתי משהו:

      app.directive('dateFormat', function () {
      return {
          require: 'ngModel',
          link: function (scope, element, attr, ngModelCtrl) {
              //Angular 1.3 insert a formater that force to set model to date object, otherwise throw exception.
              //Reset default angular formatters/parsers     
              ngModelCtrl.$formatters.length = 0;
              ngModelCtrl.$parsers.length = 0;
          }
      }; 
      

      וב HTML כך:

         <input type="date" ng-model="chotamProfile.request_closedRoomExp"  date-format/>
      

      זה לא עובד. אין לי ניסיון ב Directive. מישהו יכול לעזור (הרעיון הוא שאני רוצה ליצור Durective על אלמנט input type=date). תודה.

      zvizviZ מנותק
      zvizviZ מנותק
      zvizvi
      כתב ב נערך לאחרונה על ידי zvizvi
      #2

      @מנצפך אמר באנגולר 1 - Direcrive להמרת תאריך:

      (2018-04-03T21:00:00.000Z)

      לדעתי input date לא אמור להתנגד לפורמט כזה
      (2018-04-03T21:00:00.000Z)

      או לפחות ככה:

      new Date('2018-04-03T21:00:00.000Z')
      

      https://zvizvi.xyz

      מנצפךמ תגובה 1 תגובה אחרונה
      1
      • zvizviZ zvizvi

        @מנצפך אמר באנגולר 1 - Direcrive להמרת תאריך:

        (2018-04-03T21:00:00.000Z)

        לדעתי input date לא אמור להתנגד לפורמט כזה
        (2018-04-03T21:00:00.000Z)

        או לפחות ככה:

        new Date('2018-04-03T21:00:00.000Z')
        
        מנצפךמ מנותק
        מנצפךמ מנותק
        מנצפך
        כתב ב נערך לאחרונה על ידי
        #3

        @zvizvi הדפדפן שלי מתנגד... מה אעשה....

        תגובה 1 תגובה אחרונה
        0
        • M מנותק
          M מנותק
          magicode
          כתב ב נערך לאחרונה על ידי
          #4
          new Date("2018-04-03T21:00:00.000Z")
          

          זה תקין לגמרי.

          מנצפךמ תגובה 1 תגובה אחרונה
          0
          • M magicode
            new Date("2018-04-03T21:00:00.000Z")
            

            זה תקין לגמרי.

            מנצפךמ מנותק
            מנצפךמ מנותק
            מנצפך
            כתב ב נערך לאחרונה על ידי
            #5

            @magicode נכון. כך עשיתי את ההמרה בסקופ. אבל הinput לא מקבל אותו. לפחות לא על ידי אנגולר. אנגולר מזהה שזה לא תאריך.

            תגובה 1 תגובה אחרונה
            0
            • zvizviZ מנותק
              zvizviZ מנותק
              zvizvi
              כתב ב נערך לאחרונה על ידי
              #6

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

              https://zvizvi.xyz

              תגובה 1 תגובה אחרונה
              1
              • zvizviZ מנותק
                zvizviZ מנותק
                zvizvi
                כתב ב נערך לאחרונה על ידי zvizvi
                #7
                      ngModelCtrl.$formatters.unshift(function (a) {
                        if (ngModelCtrl.$modelValue) {
                          var date = moment(ngModelCtrl.$modelValue);
                          if (!date._isValid) {
                            return '';
                          }
                          return date.format('DD/MM/YYYY');
                        }
                      });
                
                      ngModelCtrl.$parsers.unshift(function (viewValue) {
                        if (viewValue && moment(viewValue, 'DD/MM/YYYY')._isValid) {
                          return moment(viewValue, 'DD/MM/YYYY').format();
                        }
                      });
                
                

                https://zvizvi.xyz

                מנצפךמ תגובה 1 תגובה אחרונה
                1
                • zvizviZ zvizvi
                        ngModelCtrl.$formatters.unshift(function (a) {
                          if (ngModelCtrl.$modelValue) {
                            var date = moment(ngModelCtrl.$modelValue);
                            if (!date._isValid) {
                              return '';
                            }
                            return date.format('DD/MM/YYYY');
                          }
                        });
                  
                        ngModelCtrl.$parsers.unshift(function (viewValue) {
                          if (viewValue && moment(viewValue, 'DD/MM/YYYY')._isValid) {
                            return moment(viewValue, 'DD/MM/YYYY').format();
                          }
                        });
                  
                  
                  מנצפךמ מנותק
                  מנצפךמ מנותק
                  מנצפך
                  כתב ב נערך לאחרונה על ידי
                  #8

                  @zvizvi איפה זה אמור להיות? בתוך Directive? נא לא להתקמצן...

                  zvizviZ dovidD 2 תגובות תגובה אחרונה
                  0
                  • מנצפךמ מנצפך

                    @zvizvi איפה זה אמור להיות? בתוך Directive? נא לא להתקמצן...

                    zvizviZ מנותק
                    zvizviZ מנותק
                    zvizvi
                    כתב ב נערך לאחרונה על ידי zvizvi
                    #9

                    @מנצפך אמר באנגולר 1 - Direcrive להמרת תאריך:

                    @zvizvi איפה זה אמור להיות? בתוך Directive?

                    במקום 2 השורות האלה:

                        ngModelCtrl.$formatters.length = 0;
                        ngModelCtrl.$parsers.length = 0;
                    

                    https://zvizvi.xyz

                    תגובה 1 תגובה אחרונה
                    0
                    • מנצפךמ מנצפך

                      @zvizvi איפה זה אמור להיות? בתוך Directive? נא לא להתקמצן...

                      dovidD מנותק
                      dovidD מנותק
                      dovid
                      ניהול
                      כתב ב נערך לאחרונה על ידי dovid
                      #10
                      פוסט זה נמחק!
                      מנצפךמ תגובה 1 תגובה אחרונה
                      0
                      • dovidD dovid

                        פוסט זה נמחק!

                        מנצפךמ מנותק
                        מנצפךמ מנותק
                        מנצפך
                        כתב ב נערך לאחרונה על ידי
                        #11

                        @dovid אמר באנגולר 1 - Direcrive להמרת תאריך:

                        משמה

                        לא מצאתי את האשכול הקודם
                        @zvizvi ניסיתי לעשות בלי להשתמש ב moment. בינתיים לא עובד.

                         app.directive('dateFormat', function () {
                        return {
                            require: 'ngModel',
                            link: function (scope, element, attr, ngModelCtrl) {
                                ngModelCtrl.$formatters.unshift(function (a) {
                                    if (ngModelCtrl.$modelValue) {
                                     // var date = moment(ngModelCtrl.$modelValue);
                                     // if (!date._isValid) {
                                      //  return '';
                                     // }
                                     return new Date(ngModelCtrl.$modelValue);
                                      //return date.format('DD/MM/YYYY');
                                    }
                                  });
                            
                                  ngModelCtrl.$parsers.unshift(function (viewValue) {
                                    return new Date(viewValue);
                                 /*   if (viewValue && moment(viewValue, 'DD/MM/YYYY')._isValid) {
                                      return moment(viewValue, 'DD/MM/YYYY').format();
                                    }*/
                                  });
                            }
                        };
                        

                        מה לא טוב?

                        zvizviZ dovidD 2 תגובות תגובה אחרונה
                        0
                        • מנצפךמ מנצפך

                          @dovid אמר באנגולר 1 - Direcrive להמרת תאריך:

                          משמה

                          לא מצאתי את האשכול הקודם
                          @zvizvi ניסיתי לעשות בלי להשתמש ב moment. בינתיים לא עובד.

                           app.directive('dateFormat', function () {
                          return {
                              require: 'ngModel',
                              link: function (scope, element, attr, ngModelCtrl) {
                                  ngModelCtrl.$formatters.unshift(function (a) {
                                      if (ngModelCtrl.$modelValue) {
                                       // var date = moment(ngModelCtrl.$modelValue);
                                       // if (!date._isValid) {
                                        //  return '';
                                       // }
                                       return new Date(ngModelCtrl.$modelValue);
                                        //return date.format('DD/MM/YYYY');
                                      }
                                    });
                              
                                    ngModelCtrl.$parsers.unshift(function (viewValue) {
                                      return new Date(viewValue);
                                   /*   if (viewValue && moment(viewValue, 'DD/MM/YYYY')._isValid) {
                                        return moment(viewValue, 'DD/MM/YYYY').format();
                                      }*/
                                    });
                              }
                          };
                          

                          מה לא טוב?

                          zvizviZ מנותק
                          zvizviZ מנותק
                          zvizvi
                          כתב ב נערך לאחרונה על ידי zvizvi
                          #12

                          @מנצפך אמר באנגולר 1 - Direcrive להמרת תאריך:

                          @dovid אמר באנגולר 1 - Direcrive להמרת תאריך:

                          משמה

                          לא מצאתי את האשכול הקודם
                          @zvizvi ניסיתי לעשות בלי להשתמש ב moment. בינתיים לא עובד.

                          אתה חייב לסנן החוצה ערכים שאינם תאריך, כי כשתעשה new date לערך שהוא לא תאריך - תקבל שגיאה.

                          https://zvizvi.xyz

                          מנצפךמ תגובה 1 תגובה אחרונה
                          0
                          • zvizviZ מנותק
                            zvizviZ מנותק
                            zvizvi
                            כתב ב נערך לאחרונה על ידי
                            #13

                            שים את זה בHTML ויהיה לך moment.

                            <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.0/moment.min.js">
                            

                            https://zvizvi.xyz

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

                              @מנצפך אמר באנגולר 1 - Direcrive להמרת תאריך:

                              @dovid אמר באנגולר 1 - Direcrive להמרת תאריך:

                              משמה

                              לא מצאתי את האשכול הקודם
                              @zvizvi ניסיתי לעשות בלי להשתמש ב moment. בינתיים לא עובד.

                              אתה חייב לסנן החוצה ערכים שאינם תאריך, כי כשתעשה new date לערך שהוא לא תאריך - תקבל שגיאה.

                              מנצפךמ מנותק
                              מנצפךמ מנותק
                              מנצפך
                              כתב ב נערך לאחרונה על ידי
                              #14

                              @zvizvi מסכים איתך עקרונית. כרגע זה לא קריטי. קודם שיעבוד במה שיש תאריך.
                              משום מה הפונקציות unshift לא מופעלת בכלל. אני שם בתוכן console.log והוא לא כותב.
                              אני מריח שאני מפספס כאן משהו.

                              תגובה 1 תגובה אחרונה
                              0
                              • מנצפךמ מנצפך

                                @dovid אמר באנגולר 1 - Direcrive להמרת תאריך:

                                משמה

                                לא מצאתי את האשכול הקודם
                                @zvizvi ניסיתי לעשות בלי להשתמש ב moment. בינתיים לא עובד.

                                 app.directive('dateFormat', function () {
                                return {
                                    require: 'ngModel',
                                    link: function (scope, element, attr, ngModelCtrl) {
                                        ngModelCtrl.$formatters.unshift(function (a) {
                                            if (ngModelCtrl.$modelValue) {
                                             // var date = moment(ngModelCtrl.$modelValue);
                                             // if (!date._isValid) {
                                              //  return '';
                                             // }
                                             return new Date(ngModelCtrl.$modelValue);
                                              //return date.format('DD/MM/YYYY');
                                            }
                                          });
                                    
                                          ngModelCtrl.$parsers.unshift(function (viewValue) {
                                            return new Date(viewValue);
                                         /*   if (viewValue && moment(viewValue, 'DD/MM/YYYY')._isValid) {
                                              return moment(viewValue, 'DD/MM/YYYY').format();
                                            }*/
                                          });
                                    }
                                };
                                

                                מה לא טוב?

                                dovidD מנותק
                                dovidD מנותק
                                dovid
                                ניהול
                                כתב ב נערך לאחרונה על ידי
                                #15

                                @מנצפך אמר באנגולר 1 - Direcrive להמרת תאריך:

                                @dovid אמר באנגולר 1 - Direcrive להמרת תאריך:

                                משמה

                                לא מצאתי את האשכול הקודם

                                כשיהיה לי לך יותר כח אני יידבק ממך ויהיה לי כח לענות 🙂

                                תגובה 1 תגובה אחרונה
                                0
                                • dovidD מנותק
                                  dovidD מנותק
                                  dovid
                                  ניהול
                                  כתב ב נערך לאחרונה על ידי
                                  #16

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

                                  תגובה 1 תגובה אחרונה
                                  0
                                  • zvizviZ מנותק
                                    zvizviZ מנותק
                                    zvizvi
                                    כתב ב נערך לאחרונה על ידי zvizvi
                                    #17

                                    @מנצפך רשמת את הדיירקטיב בmodule? מכיר את המושג?

                                    https://zvizvi.xyz

                                    תגובה 1 תגובה אחרונה
                                    0
                                    • מנצפךמ מנותק
                                      מנצפךמ מנותק
                                      מנצפך
                                      כתב ב נערך לאחרונה על ידי מנצפך
                                      #18

                                      @zvizvi נראה לי שכן. הפונקציה link עובדת היטב. (ניסיתי console.log).
                                      אולי תלוי בגירסה (169)

                                      תגובה 1 תגובה אחרונה
                                      0
                                      • מנצפךמ מנותק
                                        מנצפךמ מנותק
                                        מנצפך
                                        כתב ב נערך לאחרונה על ידי מנצפך
                                        #19

                                        @zvizvi הבנתי מה הבעיה. בפתרון שלך הtype של ה input הוא text.
                                        הדגשתי כאן שאני צריך type=date.
                                        לזה זה לא מועיל (בינתיים).
                                        אני לא כ"כ יודע איך זה עובד מבחינת אנגולר, משום מה הוא לא מריץ את ה unshift.
                                        תודה @dovid בזכותך מצאתי את הפוסט הנ"ל.

                                        תגובה 1 תגובה אחרונה
                                        0
                                        • zvizviZ מנותק
                                          zvizviZ מנותק
                                          zvizvi
                                          כתב ב נערך לאחרונה על ידי
                                          #20

                                          צודק, כל זה מיועד עבור input text.
                                          ועדיין אני לא מבין למה בינדינג רגיל לתאריך שקיבלת מהשרת לא עובד.

                                          https://zvizvi.xyz

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


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

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

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