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

时间:2015-07-03 10:37:41

标签: angularjs momentjs

我有一个directive,我正试图通过attribute传递日期/时刻对象。我这样传递它:(我​​知道,我可以创建隔离范围并绑定它,但事实并非如此)

<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);
        };
      }
    };
  });

1 个答案:

答案 0 :(得分:1)

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