在 angular js 中使用 link 属性缩小安全指令

Minification safe directive with link attribute in angular js

在带有 HTML 输入 here.

的 ng-model 中格式化日期的指令非常方便
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);
            });
        }
    };
});

我试图在我的项目中使用它,但问题是当 javascript 文件被缩小时它无法工作。它记录错误 [$injector:unpr] ...../$injector/unpr?p0=eProvider%20%3C-%20e%20%3C-%20dateDirective。 我尝试使用 this 缩小 请指导我如何缩小此指令。

发生这种情况是因为您没有使用注入 a.e $inject.

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

因此您的指令(和控制器)将如下所示:

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);
            });
        }
    };
}]);