Я столкнулся с тем, что кажется очень простой проблемой, но я не могу понять, как это исправить. Я отправил этот вопрос изначально, но, похоже, проблема в сфере.
Так что в основном это то, что происходит:
- У меня есть указатель даты внутри формы. Когда пользователь выбирает дату,
ng-change
сработает и вызовет функцию setDate(date)
.
- В режиме отладки я подтвердил, что выбранные данные действительно передаются в функцию.
- Внутри функции переменной $ scope.simStartDate назначено это значение, и я вижу, как ее значение изменяется.
- Однако, когда я позже отправлюсь для отправки формы,
$scope.simStartDate
возвращается с первоначальным инициализированным значением.
- Я поставил точку останова при инициализации
$scope.simStartDate = new Date()
, но она не срабатывает. Это означает, что переменная не инициализируется снова.
- Я пытался использовать переменную $ scope в ng-модели, но проблема все та же.
Это заставляет меня думать, что ng-change создает локальную область и обновляет локальную переменную, к которой я не могу получить доступ позже. Правильно ли мое понимание? Если нет, как я могу это исправить?
Это мой HTML:
<div class="row" ng-controller="DashboardParamsFormCtrl">
<div class="col-sm-6">
<div class="form-group">
<label for="inputFirstName">Simulation start date</label>
<p class="input-group">
<input type="text" class="form-control"
uib-datepicker-popup="{{format}}"
datepicker-options="options"
ng-model="date"
ng-change="setDate(date)"
is-open="opened" ng-required="true"
close-text="Close"
alt-input-formats="altInputFormats"
show-button-bar="true" />
<span class="input-group-btn">
<button type="button" class="btn btn-default"
ng-click="open()">
<i class="glyphicon glyphicon-calendar"></i>
</button>
</span>
</p>
</div>
</div>
Это JS:
angular.module('BlurAdmin.pages.dashboard')
.controller('DashboardParamsFormCtrl', DashboardParamsFormCtrl);
/** @ngInject */
function DashboardParamsFormCtrl(baConfig, layoutPaths, baUtil, $scope)
{
$scope.ParamsFormBtnClicked = function()
{
console.log("Date: " + $scope.simStartDate);
}
$scope.open = open;
$scope.opened = false;
$scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];
$scope.format = $scope.formats[0];
$scope.options = {
showWeeks: false
};
function open() {
$scope.opened = true;
}
$scope.simStartDate = new Date();
$scope.date = new Date();
$scope.setDate = function(startDate)
{
$scope.simStartDate = startDate;
}
}
})();
Спасибо.