我一起使用AngularJS和JQuery UI DatePicker,以便允许用户选择一个日期,我在同一页面上有两个日期。
我有一个自定义指令,用于处理jQuery和AngularJS之间的接口:
.directive('mydatepicker', function ($parse) {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, ctrl) {
var ngModel = $parse(attrs.ngModel);
$(function () {
element.datepicker({
showOn: "both",
changeYear: true,
changeMonth: true,
dateFormat: 'dd/mm/yy',
onSelect: function (date, inst) {
scope.$apply(function (scope) {
ngModel.assign(scope, date);
});
}
});
});
}
};
})
我的HTML看起来像这样:
<input type="text" ng-model="mjaController.tempFiltering.fromDate" mydatepicker />
<input type="text" ng-model="mjaController.tempFiltering.toDate" mydatepicker />
为了证明ngModel的价值,我还直接打印了这个值:
<pre>{{mjaController.tempFiltering.fromDate}}</pre>
<pre>{{mjaController.tempFiltering.toDate}}</pre>
然而,ngModel中的值是什么,或者我直接从datepicker中选择的日期并不重要:datepicker 始终显示今天的日期为选中 - 但是ngModel是已更新至所选日期。
datepicker作为标准jQuery工作正常,但是一旦我将它绑定到AngularJS指令,它似乎就会破坏它。
请注意,我几乎完全从here复制代码(跳过maxDate和dateRange选项),但它不起作用,但它在该示例中效果很好。