template.helper 方法 优惠券后台选择商品功能

 

最近在做一个优惠券的功能,选择可用商品和不可用的商品的时候,用的是同一个弹出层,同一个接口数据,但是要区分可用商品和不可用商品的input的选中状态

 第一步 :当你点击可用或者不可用的商品时,弹出可用或者不可用的商品列表

 //选择商品
        $(document).on("click",".select_use_goods",function () {
            $("#GoodsModal").modal("show"); //弹出层
            page = 1; //滚动加载恢复到第一页
            goodsObj = {}; //清空商品数据
            $(".goods_box").html('');//清空盒子
            availableGoods();//请求接口获取数据
        });

        var page = 1;
        var page_size = 20;
        var loading = false;
        var activeLoading = false;
        var availableGoods = function(){
            loading = true;
            $(".loading").css("display","block");
            //可选商品
            $.Ajax({
                url:api.availableGoods,
                is_login:true,
                data:{
                    page: page
                    , page_size:page_size  //找多少条
                },
                success:function (res) {
                    var goods_box = "goods_box";
                    var tem_goods_box = template(goods_box,res.result);
                    $(".goods_box").append(tem_goods_box); //渲染模板
                    res.result.data.map(function (item,index) {
                       var key = item.id+"_";
                        goodsObj[key] = item; //拿到接口返回的数据存到goodsObj 对象中
                     ;
                    });
                    disposeImageUrl();//图片处理方法
                    if (res.result.data.length == 0){
                        if (page == 1){
                            $(".loading").css("display","none");
                            $(".no_data").css("display","block");
                        } else {
                            $(".loading").css("display","none");
                            $(".no_data").css("display","none");
                        }
                        loading = true
                    } else {
                        loading = false
                        if (res.result.data.length < page_size){
                            $(".loading").css("display","none");
                            $(".no_data").css("display","none");
                            loading = true
                        }
                        $(".loading").css("display","none");
                        $(".no_data").css("display","none");


                    }
                    page++;

                }
            })
        };
//滚动加载
        $(".goods_box").scroll(function () {
            if (loading) return
            var scrollTop = $(this).scrollTop();
            var scrollHeight =$(this).get(0).scrollHeight;
            var windowHeight = $(this).height();
            if (scrollTop + windowHeight >= scrollHeight) {
                availableGoods();
            }
        });

 第二步,当你选中完成后,点击保存的时候

<script type="text/html" id="goods_box">
    {{each data}}
    <div class="active_all_list">
        <div class="active_item" style="flex: 1">
            {{#$value.id | isChecked}} //input 按钮     调用isChecked 这个模板方法 $value.id相当于 回调里的value
            <div style="margin-left: 5px;width: 100%" >
                <div class="goods-container">
                    <div class="goods-image">
                        <img style="width:60px;display: inline-block; vertical-align: middle;" class="goodsImage" data-state="0" data-value="{{$value.image}}" src="../img/baocun.png"/>
                    </div>
                    <div class="goods-info">
                        <div class="goods-info_title">{{$value.name}}</div>
                        <div class="goods-info_brief"></div>
                        <div class="goods-info_sub">价格:¥{{$value.price}}</div>
                    </div>
                </div>
            </div>
        </div>
        <div class="active_item" style="width: 100px">
            {{$value.category_name}}
        </div>
        <div class="active_item" style="width: 100px">
            {{$value.stock}}
        </div>
        <div class="active_item" style="width: 100px">
            {{$value.sku_code}}
        </div>
        <div class="active_item" style="width: 100px">
            {{$value.sales_count}}
        </div>
        <div class="active_item" style="width: 100px">
            {{if $value.goods_status == 10}}
             <span>上架</span>
            {{else if $value.goods_status == 20}}
            <span>下架</span>
            {{else if $value.goods_status == 30}}
            <span>仓库中</span>
            {{/if}}
        </div>
    </div>
    {{/each}}
</script>
<script>
//isChecked  相当于方法名称 event 
    template.helper('isChecked',function(value){
        console.log(availableGoodsData);//缓存选中可用商品的数据
        console.log(availableNotGoodsData);//缓存选中不可用的商品数据
        console.log(value);
        var type = $("input[name=zen_goods_radio][type=radio]:checked").attr("data-type");
        console.log(type);
        var key = value + '_';
        if(type == 2){ //可用商品
            if(availableGoodsData[key]!=undefined){
                return '<input class="zen_scene_radio" name="zen_all_goods_radio" data-id="'+value+'" checked  type="checkbox">';
            }else {
                return '<input class="zen_scene_radio" name="zen_all_goods_radio" data-id="'+value+'"   type="checkbox">';
            }
        }else { //不可用商品
            if(availableNotGoodsData[key]!=undefined){
                return '<input class="zen_scene_radio" name="zen_all_goods_radio" checked data-id="'+value+'"  type="checkbox">';
            }else {
                return '<input class="zen_scene_radio" name="zen_all_goods_radio" data-id="'+value+'"   type="checkbox">';
            }
        }
    }) ;
    //    隐藏的数量部分,原放在title下面
    //    {{#$value.count | parseIntFun}}
</script>

 第三步,点击保存的时候,判断是可用还是不用商品

  //保存商品
        $(document).on("click","#sure",function () {
            // var type = $(this).data("type");//2 可用 3 不可用
            var type = $("input[name=zen_goods_radio][type=radio]:checked").attr("data-type");
            console.log(type)
            if (type == 2){//如果是可用商品 将选中的商品id存到availableGoodsData对象中
                console.log("type="+2)
                var obj = [] ;
                $("input[name=zen_all_goods_radio][type=checkbox]").map(function (item,index) {
                    if ($(this).is(":checked")){
                        var key = $(this).data("id")+"_";

                        availableGoodsData[key] = goodsObj[key];
                        obj.push(goodsObj[key]);
                    }
                });
                if (obj.length == 0 ){
                    $(".show_goods_active").html(" ");
                    $("#GoodsModal").modal("hide");
                }else {
                    var show_goods_active = "show_goods_active";
                    var tem_show_goods_active = template(show_goods_active,obj);
                    $(".show_goods_active").html(tem_show_goods_active);
                    disposeImageUrl();
                    $("#GoodsModal").modal("hide");
                }
                console.log(availableGoodsData)
            } else { //如果是不可用商品 将选中的商品存到availableNotGoodsData 对象中
                console.log("type="+3)
                var obj = [] ;
                $("input[name=zen_all_goods_radio][type=checkbox]").map(function (item,index) {
                    if ($(this).is(":checked")){
                        var key = $(this).data("id")+"_";
                        availableNotGoodsData[key] = goodsObj[key];
                        obj.push(goodsObj[key]);
                    }
                });
                if (obj.length == 0 ){
                    $(".not_goods").html(" ");
                    $("#GoodsModal").modal("hide");
                }else {
                    var not_goods = "not_goods";
                    var tem_not_goods = template(not_goods,obj);
                    $(".not_goods").html(tem_not_goods);
                    disposeImageUrl();
                    $("#GoodsModal").modal("hide");
                }
                console.log(availableNotGoodsData)
            }


        });

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值