Этот хак опрятный майкл, я начал работать над чем-то похожим для своих нужд. Но потом я понял, что могу, наконец, окунуться в то, чтобы внести вклад в сообщество с открытым исходным кодом.
Я просто передал запрос на перенос, чтобы обновить библиотеку, чтобы индекс текущего слайда был открыт для области карусели.
https://github.com/angular-ui/bootstrap/pull/2089
Это изменение позволяет иметь за горкой поведение в шаблоне карусельного.
Это изменение позволило мне переопределить шаблон базовой карусели, чтобы, например, на первом слайде кнопка "prev" не показывалась или кнопка "next" не показывалась для последнего слайда.
Вы можете добавить более сложную логику для своих личных нужд, но разоблачение текущего индекса таким образом в области $ scope является частью большей гибкости этой части структуры.
EDIT
Я сделал несколько изменений для моего личного использования, но не хочу совсем еще внести это изменение, которое ближе к тому, что вы нуждающимся.
Я изменил директиву карусели, добавив свойство «закончить» в область видимости.
.directive('carousel', [function() {
return {
restrict: 'EA',
transclude: true,
replace: true,
controller: 'CarouselController',
require: 'carousel',
templateUrl: 'template/carousel/carousel.html',
scope: {
interval: '=',
noTransition: '=',
noPause: '=',
finish: '='
}
};
}])
Затем, когда я объявить карусель, я могу передать в способе этого атрибута директивы, которая является метод, в рамках контроллера, содержащего карусель.
<carousel interval="-1" finish="onFinish">
...
</carousel>
Это позволяет мне изменить мой шаблон, чтобы иметь кнопку, которая выглядит следующим образом:
<button ng-hide="slides().length-1 != currentIndex" ng-click="finish()" class="btn next-btn">finish<span class="glyphicon glyphicon-stats"></span></button>
Так это только показывает, условно на правильной горку и нг щелкни его вызовом карусели в $ scope.finish(), который является указателем на метод в контроллере, который я создал для этого приложения.
Имеют смысл?
Редактировать: Это работает, только если вы не используете функцию сортировки с ng-repeat. Существует ошибка, которая разбивает индексирование слайдов для такого рода функций.
Отлично, спасибо! – Scott
@michael Я пытаюсь добавить carouselCtrl.prev .... но добавление как next, так и prev не работает. Пожалуйста, предложите – anam