如何以角度获取当前和以前的日期?

时间:2016-01-29 02:34:37

标签: angularjs angularjs-directive angularjs-scope angular-ui-router

我正在使用角度的日期选择器..它正常工作。但是当用户输入" t"或" T"它显示当前或今天的日期..如果用户输入" t-1" ..it显示昨天的日期...当用户类型" t + 1"它显示了明天的日期。

这是我的代码 http://plnkr.co/edit/UnxLAHmKZU15cqukKqp5?p=preview

 angular.module('app',['ui.bootstrap']).controller('cntrl',function($scope){

    $scope.open2 = function() {
    $scope.popup2.opened = true;
  };

  $scope.popup2 = {
    opened: false
  };



  }).directive('toDateCheck', function() {

    return {
      require: 'ngModel',
      link: function link(scope, element, attr, ngModel) {
        scope.$watch(attr.ngModel, function(val) {
          console.log(val)

        })
      }
    }
})

1 个答案:

答案 0 :(得分:1)

您要做的是在指令上使用解析器。你的$ watch没有被触发的原因是因为它没有通过验证。尝试这样的事情。

.directive('toDateCheck', function($browser) {

return {
  require: 'ngModel',
  link: function link(scope, element, attr, ngModelCtrl) {
    scope.$watch(attr.ngModel, function(val,l) {
      console.log(val,l);
    });

     ngModelCtrl.$parsers.unshift(function(viewValue){
         if(viewValue === 't-1'){
           var yesterday = new Date();
           yesterday.setDate(yesterday.getDate() - 1);
           // Update the textbox to show the new value
           element.val(yesterday.toLocaleDateString());
           return yesterday;
         }
         return viewValue;
     });
  }
}

})