Bootstrap UI Carousel功能在选项卡中不会运行



使用Bootstrap UI进行Angular,我需要收集显示的幻灯片的索引,然后我可以使用它们来收集数据以在单独的容器中显示内容。

按照此确切的示例,我可以记录幻灯片的索引。当我在自己的环境中复制它时,它可以起作用。

我遇到的问题是,我已经在Bootstrap UI提供的tabset中插入了旋转木马,就像这样:

<uib-tabset active="activePhaseTab" type="pills">
  <uib-tab heading="Blue" index="3" ng-click="$ctrl.phaseSlide = 3;$ctrl.phaseSliderInfo($ctrl.phaseSlide)">
   <div style="height: 305px">
     <div uib-carousel active="activeSlide" interval="myInterval" no-wrap="noWrapSlides">
       <div uib-slide ng-repeat="slide in slides track by slide.id" index="slide.id">
         <img ng-src="{{slide.image}}" style="margin:auto;">
         <div class="carousel-caption">
           <h4>Slide {{slide.id}}</h4>
           <p>{{slide.text}}</p>
         </div>
       </div>
     </div>
   </div>       
  </uib-tab>
</uib-tabset>

没有将旋转木马封装在选项卡中的情况下,我能够在activeSlide上使用$watch方法,但是现在旋转木马在选项卡中,它未能这样做。

问题

如何观看TabSet中的" ActivesLide"的更改?

$scope.myInterval = 3000;
$scope.noWrapSlides = false;
var slides = $scope.slides = [];
var currIndex = 0;
$scope.addSlide = function() {
    var newWidth = 600 + slides.length + 1;
    slides.push({
      image: '//unsplash.it/' + newWidth + '/300',
      text: ['Nice image','Awesome photograph','That is so cool','I love that'][slides.length % 4],
      id: currIndex++
    });
};
for (var i = 0; i < 4; i++) {
    $scope.addSlide();
}
$scope.$watch('activeSlide', function (active) { //SHOULD LOG THE ACTIVE SLIDE
    if(active !== undefined) {
        console.log(active)
        console.log('slide ' + active + ' is active');
    }
});

您的初始plunker链接具有此怪异的语法错误,因此我使用Bootstrap UI示例进行了另一个链接。

我适合Tabset Pill演示中的旋转木马演示。$scope.$watch('activeSlide'...确实失败了。但值得庆幸的是,此特定情况在此stackoverflow问题之前已经回答。

所以我只是遵循他们的建议并尝试了他们的指示。现在,每个幻灯片更改都由on-carousel-change="onSlideChanged(nextSlide, direction)"监视。您可以检查下面的Plunker的控制台并随心所欲。

这是plunker

希望有帮助!

最新更新