有没有办法可以将输入绑定到我的模型并在其间设置日期过滤器?

时间:2014-01-18 16:41:55

标签: angularjs

在我的AngularJS应用程序中,用户可以输入日期:

<input data-ng-model="modal.data.published" />

提交和接收后,将采用以下格式:"2013-08-22T00:00Z"。请注意,它必须完全符合以下形式:“T00:00Z”在提交时附加到输入字段中的字符串上,并在数据从服务器传送到浏览器时删除。

有没有办法让日期装订工作如下:

Date Entered                  >>>>   Date sent to server
"2013-08-22"                         "2013-08-22T00:00Z"

Date sent from server         >>>>   Date appearing in the input field
"2013-08-22T00:00Z"                  "2013-08-22" 

1 个答案:

答案 0 :(得分:3)

ngModelControllerng-model指令提供API:

  • 使用$formatters格式化模型中的值 - &gt; 查看即可。
  • 使用$parsers格式化并验证视图中的值 - &gt;的模型即可。

这是plunker

app.directive('niceDate', function($filter){
  return {
    require: "ngModel",
    link: function(scope,elm,attrs,ngModel){
      ngModel.$formatters.push(function(val){
        return $filter('date')(val,"yyyy-MM-dd");
      });
      ngModel.$parsers.push(function(val){
        return $filter('date')(val,"yyyy-MM-dd") + "T00:00Z";
      })
    }
  }
})

标记:

<input type="text" nice-date data-ng-model="modal.data.published" />

我刚刚展示了一个基本示例,您还应该添加自定义验证。