installment-goods.js 2.86 KB
/**
 * ajax 请求分期专享商品|还款记录
 * @author: wsl<shuiling.wang@yoho.cn>
 * @date: 2016/08/17
 */


let $ = require('yoho-jquery'),
    tip = require('js/plugin/tip'),
    bp = require('./burying-point'),
    loading = require('js/plugin/loading');

let ListData = function(opt) {
    let self = this;

    let _scrollHandler = function() {
        let curScrollTop = $(window).scrollTop();

        // 当scroll到1/4$repayList高度后继续请求下一页数据
        if (curScrollTop > this.opt.previousScrollTop &&
            (curScrollTop + this.opt.winH >
            $(document).height() - 0.25 * this.opt.boxArea.height() - 50)) {
            this.getListData();
        }

        self.opt.previousScrollTop = curScrollTop;
    };

    self.opt = $.extend({}, {
        stopLoading: false,
        winH: $(window).height(),
        previousScrollTop: 0
    }, opt);

    $(window).scroll(function() {
        window.requestAnimationFrame(_scrollHandler.bind(self));
    });
};

require('yoho-jquery-lazyload');

ListData.prototype.getListData = function(page) {
    let self = this;

    if (page) {
        self.opt.page = page;
    }

    if (self.opt.stopLoading) {
        return;
    }
    self.opt.stopLoading = true;
    self.opt.page++;

    loading.showLoadingMask();
    $.ajax({
        type: 'GET',
        url: location.protocol + '//m.yohobuy.com' + self.opt.url,
        data: {
            page: this.opt.page
        },
        xhrFields: {
            withCredentials: true
        },
        dataType: 'html',
        success: function(data) {
            self.opt.stopLoading = false;

            if (data === '') {
                if (self.opt.noResult && self.opt.page === 1) {
                    $('.no-result').show();
                }
                self.opt.stopLoading = true;
            } else {
                self.opt.boxArea.append(data);

                if (self.opt.noResult) {
                    $('.no-result').hide();
                }

                if (!self.opt.noResult) { // 有商品列表
                    // 统计:商品翻页时
                    bp.setContYas({
                        op: 'YB_INST_HOME_GDS_LIST',
                        appop: 'YB_H5_INST_HOME_GDS_LIST_C'
                    }, {
                        PRD_NUM: $('.installment-only .good-info').length,
                        PRD_ID: bp.countGoodsId(),
                        ACTION_ID: 0,
                        REC_ID: self.opt.uuid
                    }, true);

                    $('img.lazy').lazyload({
                        effect: 'fadeIn'
                    });
                }
            }

            loading.hideLoadingMask();
        },
        error: function() {
            tip.show('网络断开连接了~');
            self.opt.stopLoading = false;
            loading.hideLoadingMask();
        }
    });
};

module.exports = ListData;