我在angularjs中使用jquery ui日期选择器,它工作正常。但是当datepicker进入ng-repeat
循环时,它无效。
<input type="text" class="form-control date_picker" ng-model="date.date" ng-repeat="date in ot.dates">
//Directive
app.directive('otForm', function () {
return {
restrict: 'E',
replace: true,
templateUrl: 'app/components/ots/form.html',
link: function ($scope, form) {
$(".date_picker").datepicker({
dateFormat: 'dd-mm-yy',
prevText: '<i class="fa fa-chevron-left"></i>',
nextText: '<i class="fa fa-chevron-right"></i>',
showButtonPanel: false,
changeYear: true,
changeMonth: true
});
}
}
})
我该如何解决这个问题?
答案 0 :(得分:4)
问题是你的DOM将有多个<input>
,其类为.date_picker
,因此你的jQuery选择器$(".date_picker")
将返回越来越多的匹配ng-repeat
1}}成长。您真的只希望您的jQuery选择器匹配ng-repeat
中的一个指令元素。您很幸运,因为指令中的link
函数会将scope
和element
本身传递给您:
<input type="text" class="form-control date_picker" ng-model="date.date" ng-repeat="date in ot.dates">
//Directive
app.directive('otForm', function () {
return {
restrict: 'E',
replace: true,
templateUrl: 'app/components/ots/form.html',
link: function (scope, element, attrs) {
$(element).datepicker({
dateFormat: 'dd-mm-yy',
prevText: '<i class="fa fa-chevron-left"></i>',
nextText: '<i class="fa fa-chevron-right"></i>',
showButtonPanel: false,
changeYear: true,
changeMonth: true
});
}
}
})
查看对link:
行和紧随其后行的更改。我假设您的指令已正确实施,但此处未显示。您有restrict: 'E'
,但我看不到<otForm
&gt;在ng-repeat
。