2015-03-27 4 views
0

У меня есть приложение AngularJS с диапазоном дат, где конечная дата всегда должна быть через 11 месяцев после даты начала (на общую продолжительность 12 месяцев). Пользователь должен иметь возможность войти в представление и изменить дату начала или окончания. Поэтому, если они редактируют дату начала, дата окончания корректируется до 11 месяцев после даты начала. И если они редактируют дату окончания, дата начала настраивается на 11 месяцев до даты окончания.

Проблема заключается в том, что когда любая из этих дат изменяется, они вызывают вызов AJAX на сервер, но, как он работает сейчас, они вызывают два вызова, потому что когда одна дата изменяется, то и другая.

Я пытаюсь использовать $scope.$watch('startDate') и $scope.$watch('endDate'), чтобы обнаружить изменения в моем контроллере, но изо всех сил пытаюсь найти способ изменить оба значения сразу, но вызвать только один вызов AJAX-сервера.

Любые идеи о том, как сохранить обе даты в строке, но избегать дублирования вызовов AJAX и $scope.$watch() петель?

+2

Не можете вы элемент используется для изменения даты вызвать функцию вместо того, чтобы делать часы? Или еще лучше, сохраните кнопку сохранения, которая сохранит новые диапазоны дат. –

+0

Ваши даты, числовая метка, строка ios, объект фактической даты? Что вы призываете ajax; отдельно для начала и конца, или вы можете их выгружать и т. д.? – rgthree

+0

@BenFelda Я использую https://github.com/g00fy-/angular-datepicker/, но не знаю, как добавить «ng-change» или аналогично этому датепиксеру, чтобы вызвать функцию. Есть идеи? В документации я ничего не видел. –

ответ

0

Благодаря предложению Бенфельда, я смог собрать какой-то код, который сделал то, что я хотел, используя datepicker g00fy и ng-change.

вид:

<div ng-model="startDate" ng-change="startDateChanged()" date-picker="startDate" min-view="month"></div> 

контроллер:

$scope.startDateChanged = function() { 
    console.log('the start date changed!'); 
    console.log($scope.startDate); 
    //make AJAX call, which only happens once 
} 
Смежные вопросы