2

我正在尝试实现一个向<input type="date">字段添加格式化程序的简单指令。该指令如下所示:

myApp.directive("date-format", function (dateFilter) {
    return {
        restrict: "A",
        require: "ngModel",
        link: function (scope, element, attributes, ngModelController) {
            ngModelController.$formatters.push(function (modelValue) {
                return modelValue && new Date(modelValue);
            });
        }
    };
});

在我将其名称更改为mb-date-format. 我创建了一个 JS 小提琴:http: //jsfiddle.net/HB7LU/4458/。它似乎可以与 , 等名称一起正常工作aaabbb但是当您将名称更改为, , ...ccc时它会停止工作。jjjzzz

4

2 回答 2

2

尝试将指令名称改为“dateFormat”,例如:

myApp.directive("dateFormat", function (dateFilter) 


然后像这样在html中使用它

<input type="date" ng-model="date" date-format>
于 2014-06-25T07:39:58.407 回答
0

查看您的小提琴,我发现了几个可能是原因的问题:

  1. 您正在使用date输入上的类型。内置的浏览器日期选择器 API 很难覆盖,因此您的格式化解决方案在许多浏览器中都不起作用。

解决方案一: 将输入类型更改为文本

<input type="text" ng-model="date" mb-date-format>

我知道这意味着您可能必须滚动自己的选择器,但是如果您想要自定义,则需要这样做。如果您不介意依赖关系,并且您的要求不是太多,AngularUI 可以制作一个非常可扩展的 datepicker

  1. 您的解析器功能永远不会受到影响,而且您可能不需要解析器来进行格式化。

解决方案第二部分: 在格式化程序函数中格式化输出我在这里修改了你的小提琴,这也实现了你最初查询的指令名称。

于 2016-03-18T17:52:42.890 回答