Дата не форматируется при копировании из одного поля выбора даты в другое

Недавно я перешел с Angular 1.2.5 на самую последнюю версию 1.3-rc.3 и с ui-bootstrap 0.7.0 на ui-bootstrap 0.11.2, и некоторые функции в моем коде не работают.

У меня есть два средства выбора даты на одной странице, которые изначально не имеют значения. Когда пользователь вводит значение для первого средства выбора даты (через средство выбора даты или вручную), я хочу, чтобы второе средство выбора даты заполнялось той же датой.

До того, как я мигрировал, все шло нормально, но теперь вторая дата не форматируется.

Код, который я использую...

    <div class="input-group">
        <input 
            class="form-control" 
            type="text" 
            name="datumVanaf" 
            ng-model="filter.datumVanaf" 
            placeholder="Datum vanaf (dd-mm-jjjj)" 
            datepicker-popup="dd-MM-yyyy" 
            required 
            datepicker-options="{{calendarOpties}}" is-open="kalender.datumVanafOpened"
            clear-text="wis" 
            current-text="Vandaag" 
            close-text="Sluiten" 
            lower-than="{{filter.datumTM}}"
            ng-class="{'error': filterForm.$submitted && filterForm.datumVanaf.$error.required || filterForm.datumVanaf.$error.lowerThan}" 
        />
        <span class="input-group-btn">
            <button type="button" class="btn btn-default" ng-click="openDatumVanaf($event)"><i class="glyphicon glyphicon-calendar"></i></button>
        </span>
    </div>
    <div class="input-group">
        <input 
            class="form-control" 
            type="text" 
            name="datumTM" 
            ng-model="filter.datumTM" 
            placeholder="Datum t/m (dd-mm-jjjj)" 
            datepicker-popup="dd-MM-yyyy" 
            required 
            datepicker-options="{{calendarOpties}}" 
            is-open="kalender.datumTMOpened"
            clear-text="wis" 
            current-text="Vandaag" 
            close-text="Sluiten"
            ng-class="{'error': filterForm.$submitted && filterForm.datumTM.$error.required || filterForm.datumVanaf.$error.lowerThan}" 
        />
        <span class="input-group-btn">
            <button type="button" class="btn btn-default" ng-click="openDatumTM($event)"><i class="glyphicon glyphicon-calendar"></i></button>
        </span>
    </div>  

И наблюдатель

$scope.$watch('filter.datumVanaf', function(newValue, oldValue) {
    logger.info('newValue', newValue);
    if (newValue != undefined && $scope.filter != undefined && $scope.filter.datumTM == undefined && isValidDate(newValue)) {
        $scope.filter.datumTM = newValue;
    }
});

Дата начала отображаться в первом поле ввода следующим образом:

28 сентября 2014 г.

Но когда он копируется во второе поле, он не форматируется:

Вс, 28 сентября 2014 г., 00:00:00 GMT+0200 (Западная Европа (zomertijd))

Я понятия не имею, почему это больше не работает, и у меня возникли проблемы с поиском подобных случаев в stackoverflow. Я надеюсь, что упускаю что-то очевидное, но я в растерянности.


person Benne Otten    schedule 02.10.2014    source источник
comment
Отредактировал ваш вопрос, чтобы сделать его более понятным, надеюсь, вы не возражаете;)   -  person Milazi    schedule 02.10.2014


Ответы (1)


попробуйте использовать $filter внутри вашей анонимной функции filter.datumVanaf, прежде чем устанавливать ее в представление. Таким образом, код может быть примерно таким:

    $scope.filter.datumTM = $filter('date')(newValue,'dd-MM-yyyy');

Не проверял, но мысль понятна ;)

Ссылка:

  1. Документация по AngularJS — использование даты в javascript
person Milazi    schedule 02.10.2014
comment
Спасибо, Asyene. Мне потребовалось некоторое время, прежде чем я смог это проверить, потому что приоритет отдавался другим вещам. Но теперь я попробовал это, и это работает как шарм. - person Benne Otten; 14.11.2014
comment
Ааааааа, Теперь кажется, что значение поля $scope.filter.datumTM на самом деле уже не дата, а строка. Это приводит к тому, что функциональность ломается, когда я отправляю ее на серверную часть. Я хочу, чтобы он повторно использовал форматирование, которое он делает при выборе даты из средства выбора даты. - person Benne Otten; 17.11.2014