Я использую Angular UI Bootstrap datepicker с расширением gm.datepickerMultiSelect, и я бы хотел, чтобы метки будний дней были интерактивными, чтобы я мог выбирать все дни месяца (например, по средам). Я могу получить/вычислить все дни того же дня недели и добавить их в выбранную область дней, но поскольку я довольно новичок в AngularJS & Bootstrap UI, я не могу найти правильный способ запуска этого события click для ярлыков.Прикрепите событие click для ярлыков буднего дня в Angular UI Bootstrap datepicker
ответ
Угловой UT Bootstrap позволяет вам переопределить шаблоны своих директив. Вы можете создать свой собственный шаблон, поместив его в тег <script>
с типом text/ng-template
.
Так мы копируем содержимое Угловой UI-х template/datepicker/day.html
и мы изменим его немного, чтобы вызвать новую функцию selectWeekday
на нашем будний день в ng-click
:
<script type="text/ng-template" id="template/datepicker/day.html">
<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">
<thead>
<tr>
<th>
<button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button>
</th>
<th colspan="{{::5 + showWeeks}}">
<button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button>
</th>
<th>
<button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button>
</th>
</tr>
<tr>
<th ng-if="showWeeks" class="text-center"></th>
<!-- Added ng-click and style -->
<th ng-click="selectWeekday(label)" style="cursor:pointer;" ng-repeat="label in ::labels track by $index" class="text-center"><small aria-label="{{::label.full}}">{{::label.abbr}}</small></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="row in rows track by $index">
<td ng-if="showWeeks" class="text-center h6"><em>{{ weekNumbers[$index] }}</em></td>
<td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{::dt.uid}}" ng-class="::dt.customClass">
<button type="button" style="min-width:100%;" class="btn btn-default btn-sm" ng-class="{'btn-info': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="::{'text-muted': dt.secondary, 'text-info': dt.current}">{{::dt.label}}</span></button>
</td>
</tr>
</tbody>
</table>
</script>
Примечания: Этот скрипт Тег должен быть в пределах ваши ng-app
иначе он будет проигнорирован и не будет перезаписывать исходный шаблон.
Теперь нам нужно изменить datepicker
директивы с AngularJS decorators добавить selectWeekday
функции:
angular.module('myApp', [
'ui.bootstrap',
'gm.datepickerMultiSelect'
])
.config(function($provide) {
$provide.decorator('datepickerDirective', function($delegate) {
var directive = $delegate[0];
//get a copy of the directive's original compile function
var directiveCompile = directive.compile;
//overwrite the original compile function
directive.compile = function(tElement, tAttrs) {
// call the directive's compile with apply to send the original 'this' and arguments to it
var link = directiveCompile.apply(this, arguments);
//here's where the magic starts
return function(scope, element, attrs, ctrls) {
//call the original link
link.apply(this, arguments);
scope.selectWeekday = function(label) {
scope.$emit('datepicker.selectWeekday', label);
};
};
};
return $delegate;
});
})
И от контроллера слушать datepicker.selectWeekday
:
.controller('DateController', function($scope) {
$scope.$on('datepicker.selectWeekday', function(event, newVal) {
$scope.selectedWeekday = newVal;
});
});
Здесь вы можете добавить логику выберите дни, основанные на известном выбранном буднем дне!
Вот рабочий стол: http://plnkr.co/edit/Ef4gd7SUYMcG05PuvqFh?p=preview
- 1. Angular-UI Bootstrap Datepicker Issue
- 2. JQUERY-UI: Datepicker - отключить событие click click
- 3. Прикрепите событие click для div
- 4. Как перевести Angular-UI-Bootstrap datepicker?
- 5. angular-ui bootstrap datepicker несколько выбора даты
- 6. Angular-Ui Bootstrap DatePicker Open on focus
- 7. Angular-UI Bootstrap Datepicker new date
- 8. angular ui bootstrap datepicker filter with repeater
- 9. Угловой UI Bootstrap Datepicker move click outside
- 10. Angular - UI Bootstrap Datepicker не отображается над Bootstrap Modal
- 11. Persist Angular UI Bootstrap Datepicker как строка для API
- 12. Angular Bootstrap datepicker custom class
- 13. angular-ui-bootstrap: Обработка события click on popover
- 14. Dynamic bootstrap ui datepicker
- 15. Отключить даты до сегодняшнего дня в угловой ui datepicker
- 16. angular ui bootstrap datepicker is-open директива не работает
- 17. Получить имя дня от буднего дня int
- 18. Angular-ui bootstrap datepicker не будет открываться дважды
- 19. NSDateComponents - установить компоненты буднего дня
- 20. Дата не отображается в angular-bootstrap datepicker
- 21. Расчет времени до буднего дня
- 22. Получение даты с буднего дня
- 23. AngularJS Bootstrap UI datepicker issues
- 24. расчета буднего дня с даты
- 25. Угловой UI Bootstrap datepicker
- 26. Case With Datepart Для буднего дня
- 27. Bootstrap datepicker UI issue
- 28. Angular UI Bootstrap Carousel Fullscreen
- 29. bootstrap datepicker value on click
- 30. Bootstrap datepicker следующий и предыдущий кнопки дня