2017-09-09 2 views
0

Es gibt sehr handliche Direktive, um Datum in ng-Modell mit HTML-Eingabe here zu formatieren.Verfallsichere Direktive mit Verbindungsattribut in angular js

angular.module('app', []).controller('Ctrl', function($scope){ 
    $scope.firstDate = new Date(); 
    $scope.secondDate = "2014-02-20"; 
}).directive('date', function (dateFilter) { 
    return { 
     require:'ngModel', 
     link:function (scope, elm, attrs, ctrl) { 

      var dateFormat = attrs['date'] || 'yyyy-MM-dd'; 

      ctrl.$formatters.unshift(function (modelValue) { 
       return dateFilter(modelValue, dateFormat); 
      }); 
     } 
    }; 
}); 

Ich versuchte gleiche für mein Projekt zu verwenden, aber das Problem ist, dass, wenn JavaScript-Datei minimiert ist zu arbeiten ausfällt. Es protokolliert einen Fehler [$ injector: unpr] ...../$ injector/unpr? P0 = eProvider% 20% 3C-% 20e% 20% 3C-% 20dateDirective. Ich habe versucht, zu minimieren mit this Bitte führen Sie mich auf, wie diese Richtlinie zu minimieren.

+0

dieses Plunker Siehe [link] (https://plnkr.co/edit/mJJSC7KW7O6V7V4ck1w5?p=preview) – Ardit

Antwort

0

Es passiert, weil Sie keine Injektion a.e $inject verwenden.

.controller('Ctrl', ['$scope',function($scope){/* ... */}]); 
.directive('date', ['dateFilter', function (dateFilter) {/* ... */}]); 

So Ihre Richtlinie (und Controller) wird wie folgt aussehen:

angular.module('app', []).controller('Ctrl', ['$scope',function($scope){ 
    $scope.firstDate = new Date(); 
    $scope.secondDate = "2014-02-20"; 
}]).directive('date', ['dateFilter', function (dateFilter) { 
    return { 
     require:'ngModel', 
     link:function (scope, elm, attrs, ctrl) { 

      var dateFormat = attrs['date'] || 'yyyy-MM-dd'; 

      ctrl.$formatters.unshift(function (modelValue) { 
       return dateFilter(modelValue, dateFormat); 
      }); 
     } 
    }; 
}]); 
+0

Sie können Bitte helfen Sie mit einem kleinen Beispiel. Ich würde es schätzen. –

+0

@shravanbardwa aktualisiert code –

+0

Jetzt hat es mich angeklickt. Vielen Dank, großer Mann! Zu gut. +1 –

Verwandte Themen