通过AngularJS中的属性传递日期/时刻对象

通过AngularJS中的属性传递日期/时刻对象,angularjs,momentjs,Angularjs,Momentjs,我有一个指令,我正试图通过属性传递日期/时刻对象。我这样传递它:(我知道,我可以创建隔离的作用域并绑定它,但事实并非如此) 实际上,您可以使用更可靠的$parse从父范围中提取值 angular.module('app') .directive('formFieldDirective', function($parse) { return { restrict: 'A', require: '^ngModel', link: function(sc

我有一个
指令
,我正试图通过
属性
传递日期/时刻对象。我这样传递它:(我知道,我可以创建隔离的作用域并绑定它,但事实并非如此)


实际上,您可以使用更可靠的
$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());
        };
      }
    };
  });

请显示指令代码……类似于此,但我想我已经解决了。请用代码更新您的问题……如果它是静态传递的,会怎么样?我发现它是以ISO格式传递的,在我看来,仅仅检查它并进行相应的处理就足够了。例如,静态地
field date=“03.04.2017”
。i、 当前的问题不包括它。但我需要通过属性传递日期,以便与分配给字段的
ngModel
进行比较。这样我就不需要为指令创建独立的作用域。您使用相同的策略…
$parse
如果我将日期静态地作为属性传递,而不是作为变量传递,那么在您的示例中,我认为我遇到了错误。
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);
        };
      }
    };
  });
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());
        };
      }
    };
  });