如果它是$ scope变量,则忽略ng-model-options

时间:2019-02-11 09:28:08

标签: angularjs angular-ui-bootstrap

我目前正在使用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

1 个答案:

答案 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中。