maybe-like.js 2.61 KB
/**
 * “你可能喜欢”模块JS
 * @author: liangzhifeng<zhifeng.liang@yoho.cn>
 * @date: 2015/10/12
 */

 /**
 * “你可能喜欢”模块JS
 * @author: xuqi(qi.xu@yoho.cn)
 * @date: 2015/7/15
 */

var $ = require('yoho.zepto'),
    lazyLoad = require('yoho.lazyload');

var $maybeLike = $('.maybe-like:last');

var winH = $(window).height(),
    loading = false,
    end = false,
    page = 1,
    type = '',
    num,
    res;

var $goodList = $maybeLike.children('.goods-list'),
    mblTop; //页面内容固定,可以预先求出高度

var isLogin = 'Y'; //是否登录,后台提供,区分走Ajax还是页面跳转

if ($('.maybe-like').size() <= 0) {
    return;
}

mblTop = $maybeLike.offset().top;

// 无可能喜欢模块时直接返回
if ($maybeLike.length === 0) {
    return;
}

//read good-info template
/*$.get('/common/goodinfo', function (data) {
    tpl = '{{# goods}}' + data + '{{/ goods}}';
    Mustache.parse(tpl);
});*/


type = $('.mobile-wrap').hasClass('boys-wrap') ? 'index' : 'girl';

//商品收藏
$('.goods-list').delegate('.good-islike', 'touchstart', function (e) {
    var $cur, $good, id, url;

    if (isLogin === 'Y') {
        e.preventDefault(); // 阻止链接跳转改AJAX

        $cur = $(e.currentTarget);
        $good = $cur.closest('.good-info');
        id = $good.data('id');

        if ($cur.hasClass('good-like')) {
            url = '/' + type + '/cancelprise';
        } else {
            url = '/' + type + '/prise';
        }


        $.ajax({
            type: 'GET',
            url: url,
            data: {
                id: id
            }
        }).then(function (data) {
            if (data.code === 200) {
                $cur.toggleClass('good-like');
            }
        });
    }
});



//srcoll to load more
$(window).scroll(function () {
    if (end || loading) {
        return;
    }

    if ($(window).scrollTop() + winH < mblTop + $maybeLike.height()) {
        return;
    }

    loading = true;
    num = $goodList.children('.good-info').length;
    $.ajax({
        type: 'GET',
        url: '/' + type + '/getmore',
        data: {
            page: page + 1
        }
    }).then(function (data) {
        if (data.code === 200) {
            res = data.data;

            if (res.end) {
                end = res.end;
            }

            /*$goodList.append(Mustache.render(tpl, {
                goods: res.goods
            }));*/
            $goodList.append(res.goods);

            //lazyLoad
            lazyLoad($goodList.children('.good-info:gt(' + (num - 1) + ')').find('img.lazy'));

            loading = false;
            page++;
        }
    });
});