美文网首页
APICloud+Vue.js商城实战-6.商品分类页面(二级分

APICloud+Vue.js商城实战-6.商品分类页面(二级分

作者: 挤时间学习的阿龙 | 来源:发表于2019-05-05 16:39 被阅读0次

1、APICloud组件 openwin 打开新窗口组件,本案例中用于二级分类打开商品列表页

官方文档地址
https://docs.apicloud.com/Client-API/api#33
(1)示例代码

api.openWin({
    name: 'page1',
    url: './page1.html',
    pageParam: {
        name: 'test'
    }
});

2、二级分类及跳转到对应分类商品列表

(1)html代码
<html class="">
<head lang="en">
    <meta charset="UTF-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
    <link rel="stylesheet" href="../../css/dangdang-app.css?2016051117">
    <style>
        .main_box .class_list_nav_box ul li {
            font-size: 13px;
            border-left: 3px solid #fafafa;
            border-right: 1px solid #e6e6e6;
            height: auto !important;
            line-height: 20px;
            text-align: center;
            color: #4d525d;
            padding: 15px 0px;
            border-bottom: 1px solid #e6e6e6;
        }
    </style>
</head>
<body>
<section class="main">
    <div class="main_box">
        <div id="app">
            <nav class="class_list_nav">
                <div class="class_list_nav_box" id="class_list_nav_box" dd_name="一级分类" style="overflow: hidden;">
                    <ul style="transition-property: transform; transform-origin: 0px 0px 0px; transform: translate(0px, 0px) scale(1) translateZ(0px);">
                        <template v-for="(vo,index) in list">
                        <li @click="init_children_list(index)" v-bind:class="{ on: index==cun_index }">
                            {{ vo.cate_name }}
                        </li>
                        </template>
                    </ul>
                </div>
            </nav>
            <div class="class_box">
                <div class="class_box_inner" id="class_box_inner" dd_name="二级分类" style="overflow: hidden;">
                    <div class="class_box_over" style="transition-property: transform; transform-origin: 0px 0px 0px; transform: translate(0px, 0px) translateZ(0px);">
                        <div id="cate_lev2_div_0" style="transform-origin: 0px 0px 0px; opacity: 1; transform: scale(1, 1);">
                            <ul class="clearfix ">
                                <li v-for="(vo,index) in children_list"  @click="open_cate_goodslist(index)" v-if="children_list.length>0">
                                    <div>
                                        <a href="javascript:void(0)">
                                            <img class="cate_icon_img"  :src="vo.url">
                                            <span>{{ vo.cate_name }}</span>
                                        </a>
                                    </div>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</section>
</body>
</html>
(2)js部分
<script type="text/javascript" src="../../script/api.js"></script>
<script type="text/javascript" src="../../script/common.js" ></script>
<script type="text/javascript" src="../../script/vue.js" ></script>
<script type="text/javascript">
    var vm = new Vue({
        el: '#app',
        data: {
            cun_index:0,   //主分类选中下标
            list: [],     //主分类
            children_list:[],  //子分类
        },
        methods: {
            init: function () {
                vm.list = [];
                api.ajax({
                    url: cate_list_url,  //引用common.js里面定义url的实际地址
                    method: 'post',
                    timeout: 30,
                    dataType: 'json',
                    returnAll: false,
                }, function (ret, err) {
                    if (ret) {
                        vm.list = ret.data;
                        console.log(JSON.stringify(vm.list));
                        vm.init_children_list(vm.cun_index);  //打开分类页面,默认子分类=cun_index(其实就是0)
                    } else {
                        console.log(JSON.stringify(err));
                    }
                });
            },

          //二级分类页面方法//
            init_children_list:function (index) {
                console.log(index);
                vm.cun_index = index;   //当前选中的主分类标记
                var cate_id = vm.list[index].id;  //当前选中的主分类id并定义成变量cate_id
                vm.children_list = [];  //声明一个空数组,用于存放数据
                api.ajax({
                    url: children_cate_list_url,  //引用common.js里面定义url的实际地址
                    method: 'post',
                    timeout: 30,
                    dataType: 'json',
                    returnAll: false,
                    data: {
                        values: {
                            cate_id: cate_id   //把主分类的id传给api接口交给后台进行处理
                        }
                    }
                }, function (ret, err) {
                    if (ret) {
                        vm.children_list = ret.data;  //把接口获取的数据赋给vm.children_list
                    } else {
                        api.alert(JSON.stringify(err));
                    }
                });
            },

            //打开对应分类商品列表
            open_cate_goodslist:function (index) {
                var cate_id = vm.children_list[index].id;
                console.log(cate_id);
                api.openWin({
                    name: 'goods_list',
                    url: 'widget://html/index/goods_list.html',
                    pageParam: {
                        cate_id: cate_id
                    }
                });
            }
        }
    });
    apiready = function () {
        vm.init();
    };
</script>
(3)效果
image.png

打开商品详情页


image.png

3、关于ajax页面访问api接口向后端传值理解

(1)api接口数据,postman模拟传值
image.png
(2)前段ajax请求,传值到api接口
image.png
(3)后端接口方法,接收传值
image.png

相关文章

网友评论

      本文标题:APICloud+Vue.js商城实战-6.商品分类页面(二级分

      本文链接:https://www.haomeiwen.com/subject/parhoqtx.html