Учитывая мой код:
<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};
}
поэтому я подозреваю, что это невозможно сделать с помощью функции
$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;
});