Swiper заблокирован

Я пытаюсь получить несколько SWIPERS (idangero.us/swiper/) на одной странице, я настраиваю магазин и хочу отображать разные свайпы для каждой категории, я легко сгенерировал, проблема здесь в том, что второй swiper inits заблокирован, и по какой-то причине после изменения масштаба он разблокируется, и я могу провести по нему: Видео с проблемой: https://streamable.com/s/a88zy/jutbzh

Самое любопытное, что я пытался повторить, но в скрипке работает как положено: https://jsfiddle.net/g4b0_88/L9ph48ev/

Вот код, в котором я генерирую салфетки для каждой категории:

$scope.loadSwiper = function(idcat){
$scope.swiperSliders[idcat-1] = new Swiper('.swiper'+$scope.store.categories[idcat-1].idcategory, {
direction: 'horizontal',
loop: false,
nextButton: '.button-next'+$scope.store.categories[idcat-1].idcategory,
prevButton: '.button-prev'+$scope.store.categories[idcat-1].idcategory,
slidesPerView: 'auto',
spaceBetween: 0,
freeMode: true
});
$scope.swiperSliders[idcat-1].unlockSwipes();
};

А вот HTML, где я загружаю категории и продукты по категориям:

<div ng-repeat="category in store.categories" ng-repeat-end-watch="categoriesWatcher">
            <h1 class="category">{{category.name}}</h1>
                <div class="swiper-container swiper{{category.idcategory}}">
                    <div class="swiper-wrapper featured-carousel">
                        <div class="swiper-slide product-block" ng-repeat="product in store.featured_products[category.idcategory-1]">
                            <div id="note{{product.idproduct}}" class="add_product_note note{{product.idproduct}}" ng-show="product_in_cart.data[product.idproduct]"><i class="fa fa-pencil-square-o" ng-click="addProductNote($ev, product.idproduct)" aria-hidden="true"></i></div>
                            <div class="product-img">
                                <img class="center-block" ng-src="<?php echo site_url('/assets/product-img/'); ?>{{product.image}}"/>
                            </div>
                            <div class="product-name">
                                <h4>{{product.name}}</h4>
                            </div>
                            <div class="product-desc">
                                <h4>{{product.description}}</h4>
                            </div>
                            <div class="product-price">
                                <p>{{product.sell_price | currency}}</p>
                            </div>
                            <div class="product-add" ng-show="product.type == 2">
                                <ngcart-addtocart id="{{product.idproduct}}" name="{{product.name}}" price="{{product.sell_price}}" quantity="1" img="<?php echo site_url('assets/product-img/');?>{{product.image}}" ptype="{{product.type}}" note="">Agregar</ngcart-addtocart>
                            </div>
                            <div class="product-add" ng-show="product.type == 1">
                                <ngcart-addtocart id="{{product.idproduct}}" name="{{product.name}}" price="{{product.sell_price}}" quantity="0.1" img="<?php echo site_url('assets/product-img/');?>{{product.image}}" ptype="{{product.type}}" note="">Agregar</ngcart-addtocart>
                            </div>
                        </div>
                    </div>
                    <div class="swiper-button-prev button-prev{{category.idcategory}}"></div>
                    <div class="swiper-button-next button-next{{category.idcategory}}"></div>
                </div>
            </div>

Как я уже сказал, Swipers загружаются правильно, но по какой-то причине блокируются и разблокируются при увеличении или уменьшении масштаба.


person g4b0.88    schedule 08.10.2017    source источник


Ответы (1)


Я нашел решение, вместо использования $scope.swiperSliders[idcat-1].unlockSwipes(); я поставил следующий блок кода:

$timeout(function(){
 $scope.swiperSliders[idcat-1].onResize();
 $scope.swiperSliders[idcat-1].update(true); 
}, 100);
person g4b0.88    schedule 09.10.2017