select-coupon.js 2.96 KB
var $ = require('jquery'),
    Handlebars = require('yoho.handlebars'),
    ellipsis = require('mlellipsis'),
    loading = require('../plugin/loading'),
    tip = require('../plugin/tip');

var page = 1,
    canGetCoupon = true,
    isGetData;

var conponTmpl = Handlebars.compile($('#tmpl-coupon').html()),
    conponNotAvaliableTmpl = Handlebars.compile($('#tmpl-coupon-not-avaliable').html());

ellipsis.init();

function getCouponDate() {
    if (!canGetCoupon) {
        return;
    }

    if (isGetData) {
        return;
    }

    loading.showLoadingMask();
    page += 1;
    isGetData = true;

    $.ajax({
        type: 'POST',
        url: '/home/couponData',
        dataType: 'html',
        data: {
            statuss: status,
            page: page
        }
    }).then(function(coupons) {
        var notAvailableCoupons = [];

        // 后端需要返回一个 coupons 列表,如下
        // notAvailable 表示不可用的优惠券
        coupons = [{
            money: '99',
            coupon_name: '满XX-减去吴悠右腿有益于有2222',
            couponValidity: '20150129-20150430',
            coupon_id: '22222'
        }, {
            money: '99',
            coupon_name: '满XX-减去吴悠右腿有益于有2222',
            couponValidity: '20150129-20150430',
            coupon_id: '2222233'
        }, {
            money: '99',
            coupon_name: 'NONO满XX-减去吴悠右腿有益于有2222',
            couponValidity: '20150129-20150430',
            coupon_id: '2222233',
            notAvailable: 1
        }];

        // coupons 是个列表,如果不是列表,可能是服务器错误,这次翻页加载不算
        if (!$.isArray(coupons)) {
            page--;
            return;
        }

        // 每页10张,当不足10张时,说明已经加载完
        if (coupons.length < 10) {
            canGetCoupon = false;
        }

        // 第一页张数为 0 ,显示优惠券为空
        if (!coupons.length && page === 2) {
            $('.select-coupon-page').html($('#tmpl-no-coupon').html());
            return;
        }

        // 把不可用的优惠券分离出来
        $.each(coupons, function(i, coupon) {
            if (coupon.notAvailable) {
                notAvailableCoupons.push(coupon);
            }
        })

        if (notAvailableCoupons.length) {
            $('.not-avaliable-coupon-line').show();
        }
        $('#coupon-list').append(conponTmpl({
            coupons: coupons
        }));
        $('#coupon-list-not').append(conponNotAvaliableTmpl({
            notAvailableCoupons: notAvailableCoupons
        }));
        window.rePosFooter();
    }).fail(function() {
        page -= 1;
        tip.show('加载优惠券失败');
    }).always(function() {
        isGetData = false;
        loading.hideLoadingMask();
    });
}

getCouponDate();

$(window).scroll(function() {
    if ($(window).scrollTop() + $(window).height() > $('body').height() * 0.9) {
        getCouponDate();
    }
});