Как установить начальное значение или значение по умолчанию в поле даты? - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь внедрить средство выбора даты в angularjs и bootstrap, но я сталкиваюсь с несколькими проблемами:

  • начальная дата не установлена ​​
  • когда я пытаюсь открыть один сборщик дат, почему он открывает все сборщики дат?

Вот мой код: http://plnkr.co/edit/elrOTfEOMmUkPYGmKTdW?p=preview

$scope.dateOptions = {
  maxDate: new Date(2020, 5, 22),
  minDate: new Date(1970,1,1),
  startingDay: 1
};
function disabled(data) {
 return true
}

$scope.open1 = function() {
  $scope.popup1.opened = true;
};

$scope.formats = ['dd-MMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];
$scope.format = $scope.formats[0];
$scope.popup1 = {
  opened: false
};

Почему он открывает все средства выбора даты, когда нажата только одна? Смотрите изображение ниже.

enter image description here

1 Ответ

0 голосов
/ 04 ноября 2018

начальная дата не установлена ​​

Это потому, что вы устанавливаете модель в строку, но для нее требуется фактический объект даты. Сделайте это:

date: {
  date: 'date',
  name: d // not this -> moment(d).format('DD-MMM-YYYY')
}

когда я пытаюсь открыть один сборщик дат, почему он открывает все сборщики дат?

Поскольку вы используете ng-repeat для создания нескольких входов, вам также необходимо использовать отдельные свойства для атрибута is-open на каждом входе. Я бы предложил добавить свойство opened к элементам, которые вы повторяете, например:

date: {
  date: 'date',
  name: d,
  opened: false
}

Затем, при событии нажатия кнопки, передайте повторяющийся элемент:

ng-click="open1(x)"

Далее установите атрибут is-open:

is-open="x.opened"

Наконец, установите для него свойство opened следующим образом:

$scope.open1 = function(x) {
  x.opened = true;
};

Вот PLNKR.

...