我正在尝试在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
};
为什么只单击一个日期选择器就会打开所有日期选择器?参见下图。
答案 0 :(得分:3)
未设置初始日期
这是因为您要将模型设置为字符串,但是它需要实际的日期对象。这样做:
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
}
然后,在按钮的click事件上,传递重复的项目:
ng-click="open1(x)"
接下来,设置is-open
属性:
is-open="x.opened"
最后,像这样设置opened
属性:
$scope.open1 = function(x) {
x.opened = true;
};