Связь между контроллерами между компонентами выбора даты - PullRequest
0 голосов
/ 20 марта 2019

Я хотел бы связать два компонента выбора даты в AngularJS.В основном я использую два поля ввода, чтобы выбрать диапазон дат.Как только пользователь выбирает дату начала, выбор даты для даты окончания должен быть ограничен и разрешать выбор только после даты начала.

Однако каждый сборщик даты определяется своим собственным контроллером, и я полагаю,что они не делятся своими моделями из-за разных областей.

Это упрощенный пример:

<div ng-controller="DatepickerDemoCtrl">
    <div style="display: inline-block; min-height: 290px;">
      <div uib-datepicker ng-model="contract.startDate"
        ng-change="options2.minDate = contract.startDate"
        datepicker-options="options1"></div>
    </div>
</div>

<div ng-controller="DatepickerDemoCtrl">
    <div style="display: inline-block; min-height: 290px;">
      <div uib-datepicker ng-model="contract.endDate"
        datepicker-options="options2"></div>
    </div>
</div>

Как установить свойство options2.minDate в первом контроллере, чтобывторой контроллер может правильно его прочитать?Есть ли простой способ сделать это, не внося слишком много накладных расходов?

1 Ответ

1 голос
/ 20 марта 2019

Создайте контроллер только один раз:

<div ng-controller="DatepickerDemoCtrl">
    <div style="display: inline-block; min-height: 290px;">
      <div uib-datepicker ng-model="contract.startDate"
           ng-change="options2.minDate = contract.startDate"
           datepicker-options="options1">
      </div>
    </div>
̶<̶/̶d̶i̶v̶>̶

̶<̶d̶i̶v̶ ̶n̶g̶-̶c̶o̶n̶t̶r̶o̶l̶l̶e̶r̶=̶"̶D̶a̶t̶e̶p̶i̶c̶k̶e̶r̶D̶e̶m̶o̶C̶t̶r̶l̶"̶>̶
    <div style="display: inline-block; min-height: 290px;">
      <div uib-datepicker ng-model="contract.endDate"
           datepicker-options="options2">
      </div>
    </div>
</div>

Тогда область будет общедоступна.

...