我目前正在使用AngularJS Bootstrap Datepicker(也称为uib-datepicker)。我目前正在尝试在其上设置UTC偏移量,可以通过同样设置ngModelOptions来完成:ng-model-options="{timezone: '+02:00'}"
,它可以正常工作。但是,如果我使用$ scope变量设置ngModelOptions,则不会更改时区。因此,很明显,这可行:
<input uib-datepicker-popup="{{picker.format}}"
ng-model="picker._value"
is-open="picker.opened"
datepicker-options="picker.options"
ng-model-options="{timezone: '+02:00'}"
close-text="{{'close' | translate}}"
clear-text="{{'clear' | translate}}"
current-text="{{'current' | translate}}"/>
但这不是:
<input uib-datepicker-popup="{{picker.format}}"
ng-model="picker._value"
is-open="picker.opened"
datepicker-options="picker.options"
ng-model-options="ngModelOptions"
close-text="{{'close' | translate}}"
clear-text="{{'clear' | translate}}"
current-text="{{'current' | translate}}"/>
即使“ $ scope.ngModelOptions”变量具有完全相同的值“ {timezone:'+02:00'}”
我正在使用angular-ui-bootstrap 2.5.6和angularjs 1.6.9
答案 0 :(得分:0)
好吧,我很快找到了答案:ngModelOptions实际上必须在datepicker的“ options”对象中设置,就像这样:
const datePickerOptions = {
opened: false,
format: 'shortDate',
options: {
startingDay: $moment().startOf('week').isoWeekday(),
minDate: null,
maxDate: null,
showWeeks: false,
ngModelOptions: {
timezone: '+02:00'
}
}
};
在引导文档(https://angular-ui.github.io/bootstrap)中,它表示ng-model-options是uib-datepicker输入中受支持的角度选项,但由于某种原因它不适用于范围变量,因此只需设置在datepicker-options中。