AngularJS输入类型=日期未在chrome上显示字符串值的日期

时间:2014-09-18 14:05:57

标签: html5 angularjs angularjs-directive

当Json对象来自Server时,date始终存储为字符串。

我们需要在输入框中显示该日期值以允许编辑/更新对象。但是

<Input type="date>

只能理解日期对象(这是正确的),因此,我们需要在从AJAX调用接收json之后将日期字符串转换为日期对象。在SO上有几个线程,试图实现相同的,但我发现这些线程无法正常工作的接受答案(甚至不是plunker)。

Convert AJAX date to Javascript date for use with ng-model

angularjs | date input not showing ng-model value

  • 我不想放手输入=&#34; date&#34; (不要放弃移动浏览器的dtPicker)。
  • 我不想在控制器上到处写一行,将日期字符串值转换为日期。虽然它确实有效,但我会把它作为最后的手段。

我尝试使用指令解决我的问题,并创建了以下指令。 我试图通过ngModel。$ formatters来引导日期对象。 jsonStrToDate中的Console.log将str打印为空字符串。

它不起作用,我的指令有什么问题?): -

.html
   <input type="date" name="dateOfReading" class="form-control" id ="dateOfReading"
    ng-model="bpReport.dateOfReading"
    json-string-to-date
    min="1970-01-01" max="2099-12-31"  required />
.js
    window.angular.module('myApp.directives', [])
      .directive('jsonStringToDate', function(){
    return {
            restrict: 'A',
            require: 'ngModel',
            link: function(scope, element, attr, ngModel) {
              console.log('directive linking called');
              function jsonStrToDate(str) {
                console.log('input str value' + str + ', and typeof is ' + typeof str);
                var d= new Date(str);
                console.log(d);
                return d;
              }
              ngModel.$formatters.push(jsonStrToDate);
              ngModel.$parsers.push(function(value) {
                console.log("value from parser method:- "+ value);
                return value;
              });

            }
          };
        });

现在我正在使用AngularJS 1.3.0 RC1 版本1.2.20也有同样的问题。

0 个答案:

没有答案