Vuejs условная отрисовка v-if

Всем привет! Хочу сделать простенький слайдер с выгрузкой фотографий из инсты, на php я такой делал, но мне нужно сделать ajax-ом. В общем так, на vue кое-что не получается, вывожу по условиям v-if (тип видео, то ссылка на видео), v-else-if (тип картинка, ссылка до картинки) и v-else для карусели, с каруселью возникла проблема с отрисовкой, хочу карусель выводить с помощью swiper slider-а, но почему то swiper slider дублируется несколько раз в нескольких местах. Полагаю я неправильно работаю с условиями, но не могу понять, где именно. Должно выглядеть так: введите сюда описание изображения Но выглядит так: введите сюда описание изображения

  <div class="instagram wrapper" id="app">
        <div class="insta-title">Insta feed</div>
        <div id="gallery" >
            <div class="photos" id="photos">

                <div class="photo" v-for="item in items">
                    <!-- if type video show video and show play button -->
                    <a v-if="item.type == 'video'" :href="item.videos.standard_resolution.url" class="fancybox.iframe" target="_blank" data-fancybox="_photos">
                        <div class="img-bg scroll-trigger" v-bind:style="{ backgroundImage: 'url(' + item.images.standard_resolution.url + ')' }"  style='background-position: center; background-repeat: no-repeat; background-size: cover; padding-top: 100%;'></div>
                    </a>
                    <!-- if type image show image -->
                    <a v-else-if="item.type == 'image'" :href="item.images.standard_resolution.url" class="fancybox" target="_blank" data-fancybox="_photos">
                        <div class="img-bg scroll-trigger" v-bind:style="{ backgroundImage: 'url(' + item.images.standard_resolution.url + ')' }"  style='background-position: center; background-repeat: no-repeat; background-size: cover; padding-top: 100%;'></div>
                    </a>
                    <!-- if type carousel show slider with carousel_media images -->
                    <div class="b-slider"  v-else>
                        <div class="swiper-container">
                            <div class="swiper-wrapper">
                                <div class="swiper-slide" v-for="ci in carousel" >
                                    <a  class="fancybox" target="_blank" data-fancybox="_photos" :href="ci.images.standard_resolution.url ">
                                        <div class="img-bg scroll-trigger" v-bind:style="{ backgroundImage: 'url(' + ci.images.standard_resolution.url + ')' }"  style='background-position: center; background-repeat: no-repeat; background-size: cover; padding-top: 100%;'></div>
                                    </a>
                                </div>
                            </div>
                            <div class="swiper-pagination"></div>
                        </div>

                    </div>

                </div>
            </div>

            <div class="buttons">
                <input class="prev" type="button" value="prev">
                <input class="next" type="button" value="next">
            </div>
        </div>


    </div>


    <script>
    var token = '', // learn how to obtain it below
        userid = '', // User ID - get it in source HTML of your Instagram profile or look at the next example :)
        num_photos = 20; // how much photos do you want to get
        var data = [];

        $.ajax({
            url: 'https://api.instagram.com/v1/users/' + userid + '/media/recent', // or /users/self/media/recent for Sandbox
            dataType: 'jsonp',
            type: 'GET',
            data: {access_token: token, count: num_photos},
            success: function(data){
                new Vue({
                  el: '#app',
                  data() {
                    return {
                      items: data.data,
                      carousel: data.data[0].carousel_media
                    };
                  },

                });
            },
            error: function(data){
                console.log(data); // send the error notifications to console
            }
        });


        $(function(){

            $(window).load(function() {
                var photos = $('.photos');
                var photoWidth = $('.photo').outerWidth(true);
                var photoLength = $('.photos .photo').length;
                var wrapperWidth = $('.instagram.wrapper').outerWidth();
                console.log(wrapperWidth)

                var divs = $("#photos .photo");
                for(var i = 0; i < divs.length; i+=3) {
                  divs.slice(i, i+3).wrapAll("<div class='insta-slide'></div>");
                }

                $('.insta-slide').css('width', wrapperWidth/2 + 'px')

                photos.css('width', photoWidth * photoLength +'px' );
            })

        })

    </script>

Ответы (0 шт):