【发布时间】:2018-05-13 00:38:17
【问题描述】:
我同时使用 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 选项),但它不起作用,但在该示例中效果很好。
【问题讨论】:
标签: jquery angularjs jquery-ui datepicker