如何使用 bootstrap 4 和 aurelia 制作动态轮播

How to make dynamic carousel with bootstrap 4 and aurelia

想实现一个滑动图片的动态轮播滑块。图片来自后端,我在使轮播动态化方面遇到问题。它适用于 bootstrap 4 但对于静态,当我希望它与 aurelia 集成时它根本不起作用。

<div id="demo" class="carousel slide" data-ride="carousel">
      <ul class="carousel-indicators" repeat.for="i of listOfImages.length">
        <li data-target="#demo" data-slide-to="i" class="${i==0 ? 'active': ''}"></li>
      </ul>
      <div class="carousel-inner">
        <div repeat.for="image of listOfImages" class="carousel-item ${i==0 ? 'active': ''}">
          <img src.bind="image" style="width:1900px;height:700px;">
        </div>
      </div>
      <a class="carousel-control-prev" href="#demo" data-slide="prev">
        <span class="carousel-control-prev-icon"></span>
      </a>
      <a class="carousel-control-next" href="#demo" data-slide="next">
        <span class="carousel-control-next-icon"></span>
      </a>
    </div>

图片不显示,轮播根本不工作。有什么帮助吗?非常感谢

我用jQuery解决了,在接下来的路上。

<div ref="carousel" class="carousel slide" data-ride="carousel" data-interval="100">
      <!-- Indicators -->
      <ol class="carousel-indicators"></ol>
      <!-- Wrapper for slides -->
      <div class="carousel-inner"></div>
      <!-- Controls -->
      <a class="carousel-control-prev"  data-slide="prev">
        <span class="carousel-control-prev-icon"></span>
      </a>
      <a class="carousel-control-next"  data-slide="next">
        <span class="carousel-control-next-icon"></span>
      </a>
    </div>

carouselSlider() {
    var self = this;
    this.slider = $(this.carousel);

    $(document).ready(function () {
      $('.carousel').carousel({
        interval: 5000,
        pause: false
      })

      for (let j = 0; j < self.listOfImages.length; j++) {
        let image = self.listOfImages[j];
        $('<div class="carousel-item"><img src=' + image + ' width="50%">   </div>').appendTo('.carousel-inner');
        $('<li data-target="#carousel" data-slide-to="' + j + '"></li>').appendTo('.carousel-indicators')
      }

      $('.carousel-item').first().addClass('active');
      $('.carousel-indicators > li').first().addClass('active');

      $('a[data-slide="prev"]').click(function () {
        $(self.carousel).carousel('prev');
      });

      $('a[data-slide="next"]').click(function () {
        $(self.carousel).carousel('next');
      });

      self.slider.carousel();
    });
  }

并在 attached() 函数中调用 carouselSlider。

这应该适合你:

<div id="demo" class="carousel slide" data-ride="carousel">
  <ul class="carousel-indicators">
    <li data-target="#demo"  repeat.for="i of listOfImages.length" data-slide-to.bind="i" class="${$first ? 'active': ''}"></li>
  </ul>
  <div class="carousel-inner">
    <div repeat.for="image of listOfImages" class="carousel-item ${$first ? 'active': ''}">
      <img src.bind="image" style="width:1900px;height:700px;">
    </div>
  </div>
  <a class="carousel-control-prev" href="#demo" data-slide="prev">
    <span class="carousel-control-prev-icon"></span>
  </a>
  <a class="carousel-control-next" href="#demo" data-slide="next">
    <span class="carousel-control-next-icon"></span>
  </a>
</div>

解释:

您目前在每个 data-slide-to 中都有字母 i 作为纯文本。 你的中继器放错标签了。 您可以使用 $first 来更好地反映您正在尝试做的事情。

用JQ做这种工作是违背MVVM的思维方式的。

我也被困在这个问题上,主要是找到 bootstrap 3 个代码。这就是为什么我合并所有代码

  1. 我们应该有一组图像
  2. 现在首先我们需要在HTML
  3. 中创建一个空容器

  <div
    id="carouselExampleIndicators"
    class="carousel slide"
    data-ride="carousel"
  >
    <ol class="carousel-indicators"></ol>

    <div class="carousel-inner"></div>
    <a
      class="carousel-control-prev"
      href="#carouselExampleIndicators"
      role="button"
      data-slide="prev"
    >
      <span class="carousel-control-prev-icon" aria-hidden="true"></span>
      <span class="sr-only">Previous</span>
    </a>
    <a
      class="carousel-control-next"
      href="#carouselExampleIndicators"
      role="button"
      data-slide="next"
    >
      <span class="carousel-control-next-icon" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
    </a>
  </div>

  1. 最后一步我们需要在上面的代码中添加图片

 $(document).ready(function () {
   var urls = []

        for (i = 0; i < urls.length; i++) {
          $(
            '<div class="carousel-item"><img src="' +
              urls[i] +
              '" class="d-block w-100">   </div>'
          ).appendTo(".carousel-inner");
          $(
            '<li data-target="#carouselExampleIndicators" data-slide-to="' +
              i +
              '"></li>'
          ).appendTo(".carousel-indicators");
        }

        $(".carousel-item").first().addClass("active");
        $(".carousel-indicators > li").first().addClass("active");
        $("#carouselExampleIndicators").carousel();
      });

  1. 只需将 urls 变量替换为您的图像数组即可粘贴上述代码