将日期格式指定为'dM-yyyy'和ng-model并将字符串值设置为“ 2014-08-31T00:00:00Z”时,Angular-UI日期选择器处于无效状态

穆拉里·克里希纳

我从asp.net mvc控制器获取日期时间值为“ 2014-08-31T00:00:00Z”。当我将此值绑定到我的angular-ui datepicker控件时,其状态显示为ng-invalid ng-invalid-date。

我也从mvc控制器获取日期格式,因此我也在HTML中绑定了日期格式。

当我在第1807行调试ui-bootstrap-tpls.js(最新版本)文件时

在此处输入图片说明

它总是像未定义的一样来。我尝试了许多替代方法,但我无法成功。:(

JavaScript无法将Angular ui datepicker日期正确转换为UTC

因此,请给我一些想法,并建议我如何解决此问题。

谢谢与问候,N.Murali克里希纳。

切特

我有同样的问题。问题在于Angular需要一个实际的日期对象,而不是日期的字符串表示形式。经过大量研究后,我最终在$ httpProvider中添加了一个transformReponse,它检查所有字符串对象以查看它们是否可以转换为日期,以及是否可以将其转换为日期。

angular.module('test')
.config(['$httpProvider', function ($httpProvider) {

    // ISO 8601 Date Pattern: YYYY-mm-ddThh:MM:ss
    var dateMatchPattern = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/;

   var convertDates = function (obj) {
      for (var key in obj) {
         if (!obj.hasOwnProperty(key)) continue;

         var value = obj[key];
         var typeofValue = typeof (value);

         if (typeofValue === 'object') {
            // If it is an object, check within the object for dates.
            convertDates(value);
         } else if (typeofValue === 'string') {
            if (dateMatchPattern.test(value)) {
               obj[key] = new Date(value);
            }
         }
      }
   }

   $httpProvider.defaults.transformResponse.push(function (data) {
      if (typeof (data) === 'object') {
         convertDates(data);
      }

      return data;
   });
}])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章