index.page.js 2.61 KB
/**
 * 购物车商品
 * @author: feng.chen<feng.chen@yoho.cn>
 * @date: 2016/12/22
 */

require('cart/index.page.css')

let testData = require('./data.json');
let $ = require('yoho-jquery');
let hbsTemplate = require('cart/index/index.hbs');

let indexObj = {
    minStock: 1,
    init() {
        let self = this;
        $.ajax({
            url: '/cart/index/new/data',
            type: 'POST',
            success: (data) => {
                $('.cart-box').html(hbsTemplate(data));
            }
        })
        
        self.registerEvent();
        self.loadRecommendForYou();
    },
    registerEvent() {
        let self = this;

        $('.cart-nav').on('click', 'li', function() {
            $('.cart-content').eq($(this).index()).removeClass('hide').siblings('.cart-content').addClass('hide');
            $(this).addClass('active').siblings().removeClass('active')
        }); 
        $('.more-box>.down-arrow').on('click', function() {
            $(this).parent().toggleClass('down')
        });
        $('.opt>.chk').on('click', function() {
            $(this).toggleClass('checked')
        });
        $('.check-all').on('click', function() {
            $(this).find('.chk').hasClass('checked') ? $('.opt>.chk').removeClass('checked') : $('.opt>.chk').addClass('checked');
            $(this).find('.chk').toggleClass('checked');
        });
        $('.cart-good').on('click', '.num-opt .btn', function(e) {
            let maxStock = 5;
            let minusEl = $(e.delegateTarget).find('.btn-minus');
            let plusEl = $(e.delegateTarget).find('.btn-plus');
            let goodNum = $(e.delegateTarget).find('.good-num').val();

            $(this).hasClass('btn-plus') ? goodNum++ : goodNum--;

            if (goodNum < self.minStock) {
                console.log('不能小于0')
                return;
            }
            if (goodNum > maxStock) {
                console.log('不能大于5')
                return;
            }
            if (goodNum === self.minStock) {
                $(minusEl).addClass('disabled');
            } else if($(minusEl).hasClass('disabled')) {
                $(minusEl).removeClass('disabled');
            }
            if (goodNum === maxStock) {
                $(plusEl).addClass('disabled');
            } else if($(plusEl).hasClass('disabled')) {
                $(plusEl).removeClass('disabled');
            }
            $(e.delegateTarget).find('.good-num').val(goodNum);
        })
    },
    loadRecommendForYou() {
        if ($('.recommend-for-you').length) {
            require('./recommend-for-you-cart');
        }
    }
}

$(() => {
    indexObj.init();
})