javascript - Backbone.js开发中引用swiper.js做轮播lazyLoading: true时无法生效?
PHPz
PHPz 2017-04-10 17:38:25
0
3
442

要在backbone实现这样的效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="http://cdn.bootcss.com/Swiper/3.3.0/css/swiper.min.css">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"/>
    <script src="http://cdn.bootcss.com/jquery/2.2.0/jquery.js"></script>
    <script src="http://cdn.bootcss.com/Swiper/3.3.0/js/swiper.min.js"></script>
</head>
<body>
<p class="swiper-container">
    <p class="swiper-wrapper">
        <p class="swiper-slide">
            <a href="">
                <img src="http://img.alicdn.com/tps/i1/TB1dGcZLpXXXXcnaXXXX3a8GpXX-700-500.jpg" class="swiper-lazy" style="width:100%;">
            </a>
        </p>
        <p class="swiper-slide">
            <a href="">
                <img src="http://img.alicdn.com/tps/i1/TB1dGcZLpXXXXcnaXXXX3a8GpXX-700-500.jpg" class="swiper-lazy" style="width:100%;">
            </a>
        </p>
        <p class="swiper-slide">
            <a href="">
                <img src="http://img.alicdn.com/tps/i1/TB1dGcZLpXXXXcnaXXXX3a8GpXX-700-500.jpg" class="swiper-lazy" style="width:100%;">
            </a>
        </p>
    </p>
    <p class="swiper-pagination"></p>
</p>
<script>
               $('body').find(".swiper-container").swiper({
                loop: true,
                pagination: $(".swiper-pagination", 'body')[0],
                autoplay: 2500,
                autoplayDisableOnInteraction:false,
                paginationClickable: true,
                lazyLoading: true,
            });
</script>
</body>
</html>


backbone
tpl

<p class="swiper-container">
    <p class="swiper-wrapper">
        {{~it.item_list:v:index}}
        <p class="swiper-slide">
            <a href="{{=v.id}}">
                <img class="swiper-lazy" src="{{=v.img}}"  style="width:100%;">
            </a>
            
        </p>
        {{~}}
    </p>
    <p class="swiper-pagination"></p>
</p>

views

define(["doT","text!components/modules/slide/tpl.html","components/modules/slide/view","swiper"],function (doT,tpl,Model,swiper) {
   var view= Backbone.View.extend({
        id: "modules-slide",
        template: doT.template(tpl),
        events:{},
        initialize: function () {},
        render: function () {
               this.$el.html(this.template(this.model));
               this.$el.find(".swiper-container").swiper({
                loop: true,
                pagination: $(".swiper-pagination", this.$el)[0],
                autoplay: 2500,
                autoplayDisableOnInteraction:false,
                paginationClickable: true,
                lazyLoading: true//如果要延迟加载图片就有问题
            });
            return this
        },
    });
   return view;
})

渲染后是这样的


但是网页内容是空白的,除非我把src换成src 还有把lazyLoading:true删掉

求解决办法

PHPz
PHPz

学习是最好的投资!

répondre à tous(3)
黄舟

引用swiper 3.3.1试试吧

阿神

这个主要和backbone的机制有关系 $el前后 的关系

伊谢尔伦

我之前遇到这个问题是因为添加了页面缓存导致懒加载失效。
如果这里的默认懒加载失效可以尝试更换其他的加载方式

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal