通过 AngularJS 中的属性传递 Date/moment 对象

Passing Date/moment object via attribute in AngularJS

我有一个 directive,我正在尝试通过 attribute 传递 Date/moment 对象。我是这样传递它的:(我知道,我可以创建隔离范围并绑定它,但事实并非如此)

<form name="form">
  <input name="field" ng-model="fieldModel" form-field-directive field-date="{{fieldDateModel}}" />
</form>

没有大括号,结果很明显,但是我得到了这样的引用字符串 "2015-07-03T10:35:13.691Z".

有没有办法使用它?

更新:

angular.module('app', [])
  .controller('AppCtrl', function($scope) {
    $scope.fieldDateModel = moment(); // new Date()
  });

angular.module('app')
  .directive('formFieldDirective', function() {
    return {
      restrict: 'A',
      require: '^ngModel',
      link: function(scope, iElement, iAttrs, ngModelCtrl) {
        ngModelCtrl.$validators.fieldDate = function() {
          if (angular.isUndefined(iAttrs.fieldDate)) {
            return true;
          }

          console.log(iAttrs.fieldDate);
        };
      }
    };
  });

您实际上可以使用更可靠的 $parse 从父作用域中提取值。

angular.module('app')
  .directive('formFieldDirective', function($parse) {
    return {
      restrict: 'A',
      require: '^ngModel',
      link: function(scope, iElement, iAttrs, ngModelCtrl) {
        ngModelCtrl.$validators.fieldDate = function() {
          if (angular.isUndefined(iAttrs.fieldDate)) {
            return true;
          }

          console.log(($parse(iAttrs.fieldDate)(scope)).format());
        };
      }
    };
  });

http://jsbin.com/qoheraloge/1/edit?js,console,output