опции загрузчика даты в angular-ui используют функцию вместо json

0

Учитывая мой код:

<input type="text" class="form-control" uib-datepicker-popup="dd-MM-yyyy" ng-model="addNoPayRows[$index].date" is-open="addNoPayPopup[$index].opened"  ng-required="true" close-text="Close" datepicker-options="datepickerOptions($index)"/>

и js

$scope.datepickerOptions = function(index) {
            if(index == 0) {
                return {showWeeks:false, minDate:$scope.today};
            } else {
                return {showWeeks:false, minDate: $scope.addNoPayRows[index-1].date};
            }
        }

на странице может быть несколько датпикеров. моя цель в том, что если это первый minDate даты, то minDate устанавливается как сегодня, иначе minDate должен быть установлен как не раньше, чем предыдущая выбранная дата

Я пытаюсь сделать это функциональным способом, но он всегда сообщает

10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: [[{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":{"showWeeks":false,"minDate":"2016-08-01T08:16:05.956Z"},"oldVal":{"showWeeks":false,"minDate":"2016-08-01T08:16:05.956Z"}},{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":{"showWeeks":false,"minDate":null},"oldVal":{"showWeeks":false,"minDate":null}}],[{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":{"showWeeks":false,"minDate":"2016-08-01T08:16:05.956Z"},"oldVal":{"showWeeks":false,"minDate":"2016-08-01T08:16:05.956Z"}},{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":{"showWeeks":false,"minDate":null},"oldVal":{"showWeeks":false,"minDate":null}}],[{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":{"showWeeks":false,"minDate":"2016-08-01T08:16:05.956Z"},"oldVal":{"showWeeks":false,"minDate":"2016-08-01T08:16:05.956Z"}},{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":{"showWeeks":false,"minDate":null},"oldVal":{"showWeeks":false,"minDate":null}}],[{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":{"showWeeks":false,"minDate":"2016-08-01T08:16:05.956Z"},"oldVal":{"showWeeks":false,"minDate":"2016-08-01T08:16:05.956Z"}},{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":{"showWeeks":false,"minDate":null},"oldVal":{"showWeeks":false,"minDate":null}}],[{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":{"showWeeks":false,"minDate":"2016-08-01T08:16:05.956Z"},"oldVal":{"showWeeks":false,"minDate":"2016-08-01T08:16:05.956Z"}},{"msg":"fn: function (c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}","newVal":{"showWeeks":false,"minDate":null},"oldVal":{"showWeeks":false,"minDate":null}}]]

любая идея, как это реализовать? благодаря


Редактировать:

$scope.today = new Date();

даже если функция записывается как

$scope.datepickerOptions = function(index) {           
    return {showWeeks:false, minDate:$scope.today};
}

поэтому я подозреваю, что это невозможно сделать с помощью функции

Теги:
datepicker
angular-ui-bootstrap

1 ответ

0

$scope.today должен быть объектом Object/Moment Date (если у вас есть), то для второго выбора даты вместо $scope.addNoPayRows[index-1].date вы можете иметь $scope.today а затем вы можете добавить наблюдатель за ng-model первого выбора даты:

Имейте массив minDate, где каждый элемент является minDate для eachDate Picker, который может быть инициализирован как:

$scope.minDates = [$scope.today, $scope.today];
$scope.datepickerOptions = function(index) {
   return {showWeeks:false, minDate:$scope.minDates[index]};   
};

// Watcher
$scope.$watch(function(){return $scope.addNoPayRows[0].date;}, 
   function(){
     $scope.minDates[1] = $scope.addNoPayRows[0].date;
});
  • 0
    $ scope.datepickerOptions = function (index) {return {showWeeks: false, minDate: $ scope.today}; }; даже этот не работает. есть та же проблема, что и выше

Ещё вопросы

Сообщество Overcoder
Наверх
Меню