Как вы добавляете значение в DatePicker из Angular Factory? - PullRequest
0 голосов
/ 22 марта 2019

У меня есть Angular Factory, которая получает одну дату из бэкэнда моего весеннего приложения, и я хотела добавить ее во вход, чтобы на входе календаря всегда была указана дата, полученная из бэкэнда, без возможностиПользователь, чтобы изменить его.Как я мог достичь этого?Должен ли я положить его на моем контроллере или непосредственно на кнопку?Это мой код:

Завод (объединенный с другими .factory):

.factory('DataInizioGeneraCalendario', function ($resource) {
return $resource('rest/anagrafica/dataInizioGeneraCalendario', {
    get: {
        method: 'GET'
    }
});

Функция контроллера:

 $scope.generaCalendario = function () {
    $scope.modificaCalendarioDiv = true;
    $scope.successMessage = false;
    $("#idModificaCalendarioDiv").hide();
    $scope.element = new Calendario();
    autoScroll('generaCalendario');
    $("#idErrorTemplate").hide();
    $('#data').attr('disabled', false);
    $("#idGeneraCalendarioDiv").show();
};

Ввод:

<div class="col-xs-12 col-md-2" >
                    <label for="dataInizio" class="row col-xs-12 control-label" style="text-align: left">da Data</label>
                    <input class="datepicker form-control" placeholder="gg/mm/aaaa" required type="text" id="data" ng-disabled="true" />
                </div>

Редактировать: забыли добавить, функция контроллера вызывается кнопкой, отображающей ввод для календаря.

1 Ответ

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

Поскольку GET-запрос вашей фабрики будет возвращать значение даты асинхронно, лучше иметь в контроллере значение $scope.date, которое будет содержать значение даты, возвращаемое с сервера.Кроме того, в зависимости от формата, в котором вы храните даты в бэкэнде, вам может потребоваться преобразовать значение, возвращаемое из бэкэнда, в формат string , чтобы оно правильно использовалось <input type="date">согласно Angular docs .

В вашем коде вам необходимо привязать элемент ввода к этому значению, например: <input ng-model="date">.Он будет привязывать этот ввод к модели данных, чтобы каждый раз, когда пользователь редактировал ввод, тоже обновлялся $scope.date.

Если вы не хотите, чтобы пользователи моглиотредактируйте эту дату , затем вам нужно:

  1. Оставить поле ввода отключенным <input disabled> (здесь не нужно использовать ng-disabled, потому что вы хотите, чтобы оно всегда было отключено).А также удалите эту строку: $('#data').attr('disabled', false); в вашей функции.

  2. Вы односторонняя привязка, вместо двухсторонней привязки, например: <input disabled ng-value="date">

Вот рабочая DEMO , которая показывает два входа: один для редактирования, а другой нет.

...