我正在使用bootstrap datepicker。我有两个相同形式的日期。
有两个问题/问题。
我已经为datepicker创建了指令,
directive('myDatepicker', function (gettextCatalog) {
"use strict";
return {
'restrict' : 'A',
'require' : 'ngModel',
'link' : function (scope, element, attrs, ctrl) {
element.datepicker({
'format' : 'yyyy-mm-dd',
'language' : gettextCatalog.currentLanguage,
'autoclose' : true,
'clearBtn' : false,
'todayBtn' : 'linked',
'todayHighlight' : true
}).on('show', function (e) {
element.datepicker('update', ctrl.$viewValue);
}).on('changeDate',
function (e) {
ctrl.$setViewValue(moment(e.date).format('YYYY-MM-DD'));
console.log("in directive = " + moment(e.date).format('YYYY-MM-DD'));
}).on(
'changeMonth',
function (e) {
ctrl.$setViewValue(moment(e.date)
.format('YYYY-MM-DD'));
}
).on(
'changeYear',
function (e) {
ctrl.$setViewValue(moment(e.date)
.format('YYYY-MM-DD'));
}
);
}
};
});
控制器看起来像,
angular.module('my.controllers')
.controller('dateOprnController', function($scope) {
$scope.doOperationOnToDate = function() {
console.log("in controller = " + $scope.toDate);
};
});
我的日期选择器看起来像
<div class="right-inner-addon">
<i class="glyphicon glyphicon-calendar"></i>
<input type="text" id="fromDate" class="form-control datepicker" ng-model="fromDate" ng-blur="doOperationStartDate()" my-datepicker>
</div>
<div class="right-inner-addon">
<i class="glyphicon glyphicon-calendar"></i>
<input type="text" id="toDate" class="form-control datepicker" ng-model="toDate" ng-blur="doOperationOnToDate()" my-datepicker>
</div>
考虑toDate,如果我选择toDate,它会在控制台中显示以下输出。
//我选择date = 2015-09-08
in controller = undefined
in directive = 2015-09-08
//我选择date = 2015-09-09
in controller = 2015-09-08
in directive = 2015-09-09
在控制器中,它提供先前选择的日期,但在指令中给出正确的日期。
如何在选择时在控制器中获得正确的日期?