UI-Bootstrap Carousel不会与我的Angular App合作。为什么?

时间:2015-10-04 18:43:02

标签: html angularjs twitter-bootstrap dependencies carousel

我已经尝试了一切。这就像我做的一切都不能让这个该死的旋转木马工作。它从控制器中引入了适当的数据,但它没有像旋转木马那样格式化 - 一切都在显示,而且这些单词堆叠在一起。

以下是我的角度应用依赖项:

var app = angular.module('app', ['ngRoute', 'ui.bootstrap', 'ui.bootstrap.tpls', 'ngAnimate', 'ngTouch'])

这是我的标记:

<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">  <link rel="stylesheet" href="style/main.css">
<link rel="stylesheet" href="style/home.css">
<link rel="stylesheet" href="bower_components/animate.css/animate.css">
<link rel="stylesheet" href="bower_componenets/angular-bootstrap/ui-bootstrap-csp.css">
<link rel="stylesheet" href="bower_components/angular-carousel/dist/angular-carousel.css">

<script  src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/gsap/1.10.3/TweenMax.min.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
<script src="bower_components/angular-animate/angular-animate.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.13.4/ui-bootstrap.js"></script>
<script src="bower_components/angular-touch/angular-touch.js"></script>
<script src="bower_components/angular-carousel/dist/angular-carousel.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers/homeController.js"></script>

...

<div id="myCarousel" class="carousel slide" data-ride="carousel">
 <ol class="carousel-indicators">
    <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#myCarousel" data-slide-to="1"></li>
    <li data-target="#myCarousel" data-slide-to="2"></li>
  </ol>
  <uib-carousel class="carousel-inner" role="listbox">
  <uib-slide ng-repeat="slide in slides" ng-class="{active : $first}">
    <img ng-src="{{slide.image}}" style="margin:auto;">
    <div class="carousel-caption">
      <h1>{{slide.headline}}</h1>
      <p>{{slide.byline}} on {{slide.date}}</p>
      <h3>{{slide.publication}}</h3>
    </div>
  </uib-slide>
    <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev"  ng-non-bindable>
      <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
      <span class="sr-only">Previous</span>
    </a>
    <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next"  ng-non-bindable>
      <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
    </a>
  </uib-carousel>
</div>

我只是不明白。即使我放弃使用ng-repeat执行此操作并将所有数据直接硬编码到标记中,箭头仍然都是毛刺并且向后移动或者卡在第二张幻灯片上。我不知道,我的依赖项可能有问题。无论如何,令人沮丧的是因为无法让这样一个“简单”的组件工作。

提前致谢,

彼得

3 个答案:

答案 0 :(得分:7)

uib-carousel 语法(注意 uib - 前缀)已在angular ui中引入-bootstrap 0.14.0 ,但你的版本是 0.13.4 ,其中指令名为 carousel ,即没有前缀。

要么升级到0.14,要么保持在0.13,删除uib-前缀就可以了。

替换:

    <uib-carousel ...>
        <uib-slide ...>
           <!-- ... -->
        </uib-slide>  
    </uib-carousel>

使用:

    <carousel ...>
        <slide ...>
           <!-- ... -->
        </slide>  
    </carousel>

作为旁注,请从依赖项中删除angular-carousel.(js|css),因为它是另一个轮播解决方案,但您显然正在使用ui-bootstrap。

答案 1 :(得分:4)

Michael P. Bazos的答案确实可以解决您的问题,但您不应该这样做,因为它是已弃用的API。

Angular-Bootstrap的开发人员决定在他们的指令中添加前缀(uib),并在版本0.14中添加角度控制器。自发布以来,官方文档仅包含uib-prefixed版本。如果在项目中使用旧版本的angular-bootstrap,则当前文档将无法正常工作。

因此:将角度引导程序更新为最新版本(截至今天,2015-10-12,它是0.14.1),它将起作用。迈克尔的解决方案已被弃用。

答案 2 :(得分:1)

在这里您可以找到工作演示:https://plnkr.co/edit/PrM5PSkUHJ3l8mwXMFZQ?p=preview

自2016年3月30日(似乎是AngularUI 1.3.0),uib-carousel和uib-slide指令具有restrict: 'A'子句,这意味着它们应被定义为元素的属性。此示例可在AngularUI homepage上找到:

<div uib-carousel active="active" interval="myInterval" no-wrap="noWrapSlides">
    <div uib-slide ng-repeat="slide in slides track by slide.id" index="slide.id">
        ...
    </div>
</div>

更重要的是,似乎你用AngularUI'旋转木马弄乱了Bootstrap'旋转木马。