user944513
user944513

Reputation: 12729

how to get current and previous date in angular?

I am using date picker in angular ..which is working fine .But I need when user type "t" or "T" it show current or today date ..And if user type "t-1" ..it show yesterday date ...Same when user type "t+1" it show tomorrow date .

here is my code 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)

        })
      }
    }
})

Upvotes: 1

Views: 3702

Answers (1)

Kent Cooper
Kent Cooper

Reputation: 4509

What you're going to want to do is use a parser on your directive. The reason your $watch is not firing is because its not passing validation. Try something like this.

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

})

Upvotes: 1

Related Questions