bootstrap * slide.bs.carousel * событие не запускается в vue js - PullRequest
0 голосов
/ 26 декабря 2018
<div id="appFeatureimg" class="carousel slide">
    <div class="carousel-inner row w-100 mx-auto">
        <div class="carousel-item col-md-3 col-sm-3 col-3"  :class= "{active: index==0 }" v-for="(screenshot,index) in app_details.screenshots">
            <div class="panel panel-default">
               <div class="panel-thumbnail">
                     <a href="#" class="thumb">
                          <img class="img-fluid mx-auto d-block" :src="screenshot"alt="slide 1" >
                     </a>
               </div>
           </div>
       </div>
   </div>
   <a class="carousel-control-prev" href="#appFeatureimg" 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 text-faded" href="#appFeatureimg" role="button" data-slide="next">
      <span class="carousel-control-next-icon" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
   </a>
</div>

Это мой html, где я генерирую элемент карусели

 <script>
            vue js code goes here
 </script>

и другой код js

<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.13.0/umd/popper.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script>
    $( document ).ready(() => {
        console.log('ready');
        $('#appFeatureimg').on('slide.bs.carousel', (e) => {
            console.log('ready2');
            var $e = $(e.relatedTarget);
            var idx = $e.index();
            var itemsPerSlide = 4;
            var totalItems = $('.carousel-item').length;

            if (idx >= totalItems-(itemsPerSlide-1)) {
                var it = itemsPerSlide - (totalItems - idx);
                for (var i=0; i<it; i++) {
                    // append slides to end
                    if (e.direction=="left") {
                        $('.carousel-item').eq(i).appendTo('.carousel-inner');
                    }
                    else {
                        $('.carousel-item').eq(0).appendTo('.carousel-inner');
                    }
                }
            }
        });
    });
</script>

, и это мой jQuery для карусели.

После document.ready функции я получаю печать своей консоли, но событие начальной загрузки slide.bs.carousel не запускается.Я поставил этот код перед моим VUE JS и другим сценарием, но безрезультатно.любое предложение будет действительно заметным.

1 Ответ

0 голосов
/ 26 декабря 2018

Переместите

$( document ).ready(() => {
        console.log('ready');
        $('#appFeatureimg').on('slide.bs.carousel', (e) => {
            console.log('ready2');
            var $e = $(e.relatedTarget);
            var idx = $e.index();
            var itemsPerSlide = 4;
            var totalItems = $('.carousel-item').length;

            if (idx >= totalItems-(itemsPerSlide-1)) {
                var it = itemsPerSlide - (totalItems - idx);
                for (var i=0; i<it; i++) {
                    // append slides to end
                    if (e.direction=="left") {
                        $('.carousel-item').eq(i).appendTo('.carousel-inner');
                    }
                    else {
                        $('.carousel-item').eq(0).appendTo('.carousel-inner');
                    }
                }
            }
        });

в смонтированный раздел vue js component

...