震惊!Ajax项目中的使用

啊啊!实习第一天写了个移动端的分享列表,就在第三天我们的技术大佬亲自教我们如何对接后台,当然用的是我写的移动端的分享列表,虽然这次应用不是很深入,但还是比较广泛,用到了Ajax,sui框架(zepto),Vue框架

整体效果

这里上面的三中效果,里面的每一个白色的区域就是一个组件(Vue.js学了怎么久的Vue终于知道vue多吊了),区域中每段的文字,是否核销,点击top的切换是通过Ajax的异步传输,穿过来的一个数组(res在我的这个案例中),在遍历这个数组(v-for)得到了全部的全部组件,z在当点击以核销的时候我们会传递一个对象的属性值给服务器,服务器会进行判断,为true就显示出来这里显示了2个就这样实现了大致的效果

具体代码,这里如果自己复制是看不到效果的 因为post中的url是在服务器中的,但res数值我会截图出来,好进行阅读,理解

图一为res(数组)对象,图二为res(数组中第一项的对象中的细节)

开始代码了

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>我的生活</title>
    <meta name="viewport" content="initial-scale=1, maximum-scale=1">
	<!-- SUi框架的写法 -->
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="stylesheet" href="css/sm.min.css"/>
    <link rel="stylesheet" href="css/sm-extend.min.css"/>
	<!-- 自己的css内容 -->
    <link rel="stylesheet" href="css/main.css"/>
	<!-- 用zepto使用了 -->
    <!--<script src="js/jquery.min.js"></script>-->
</head>
<body>
<div class="content" id="app">
    <div class="content-block" id="header" style="margin-top: 0;position: fixed;top: 0;width: 100%;background-color: #ffffff;z-index: 2">
        <p class="buttons-row buttons-tab" style="margin-top: 0;margin-bottom: 0">
            <a href="#tab1" :class="{'active':status == 0,'pitchOn':status == 0}" class="button tab-link bg-white" @click="select_int(0)">全部</a>
            <a href="#tab2" :class="{'active':status == 2,'pitchOn':status == 2}" class="button tab-link bg-white" @click="select_int(2)">已核销</a>
            <a href="#tab3" :class="{'active':status == 1,'pitchOn':status == 1}" class="button tab-link bg-white" @click="select_int(1)">未核销</a>
        </p>
    </div>
    <div class="content-block" style="margin-top: 50px">
        <div class="tabs">
			<!-- 因为点击按钮的时候传递的参数的不同服务器会进行判断筛选,也就是说if status为2的时候显示这个数值中的某个对象,下面的未核销那就是为1,当参数为0的时候就全部显示不刷选,如果这里没理解看124行 -->
            <div id="tab1" class="tab active">
                <div class="content-block">
					<!-- 遍历数组 -->
                    <my-component :item="item"  v-for="item in list"></my-component>
                </div>
            </div>
            <div id="tab2" class="tab">
                <div class="content-block">
                    <my-component :item="item" v-for="item in list"></my-component>
                </div>
            </div>
            <div id="tab3" class="tab">
                <div class="content-block">
                    <my-component :item="item" v-for="item in list"></my-component>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="js/vue.min.js"></script>
<!-- sui中的js -->
<script type="text/javascript" src="js/zepto.min.js"></script>
<script type="text/javascript" src="js/sm.min.js"></script>
<script type="text/javascript" src="js/sm-extend.min.js"></script>
<!-- <script type="text/javascript" src="js/main.js"></script> -->
<!-- 时间戳的插件 -->
<script src="../../dist/js/common.js"></script>
<script>
    Vue.component('my-component', {
        props: ['item'],
        methods:{
			//时间戳
            'dateformat': function (time) {
                return config_fuc.dateformat(time);
            }
        },
		//里面的三元运算符全是用来判断的
		//里面的{{}}的值都是图二中的对象属性中的属性值
        template: '\
			<div class="area">\
				<div class="one">\
					<span>{{item.title}}</span>\
					<span class="button button-dark pull-right bg-gray font-white" :class="{\'bg-orange\':item.status == 2}">{{item.status == 2 ? "已核销":"未核销"}}</span>\
				</div>\
				<div class="two">\
					<span class="icon icon-home"></span>\
					<span class="var">{{item.shop_name}}</span>\
					<span class="mar pull-right" >佣金:{{item.share_agency_cash}}</span>\
				</div>\
				<div>\
					<p>领券时间:{{dateformat(item.lqtime)}}</p>\
				</div>\
				<div>\
					<p>核销时间:{{item.utime?dateformat(item.utime):"--"}}</p>\
				</div>\
			</div>',
    });
    var search_obj = {};
    var app = new Vue({
        el: '#app',
        data: {
            list: [],
            status:0
        },
        methods: {
            'start': function () {
				//这句话为什么这样写,我直接postData = search_obj就可以了吗?(答案是可以的)
				//为了保险search_obj是否不为对象
                var postData = search_obj ? search_obj : {};
				console.log(search_obj);
				//函数上下文,在异步对象中的使用
                var self = this;
				//添加属性值,这个属性值是必须添加的
                postData.op = 'list';
				//sui方法
                $.showPreloader('加载中...');
                $.post("../../../api/index.php?s=index/Agency/api_get_my_order_list", postData,
                        function (res) {
							//当异步完成后把加载中...删除关闭
                            setTimeout(function(){
                                $.hidePreloader();
                            },1);
							//这里不知道为什么,要记得看
                            if (res.code == 200) {
								////这里不知道为什么,要记得看
                                console.log(res.data.data);
								//这里不知道为什么,要记得看
                                self.list = res.data.data;
                            } else {}
                        }, "json")
            },
			//点击tab的方法
            'select_int': function (status) {
				//改变app对象中的data中的status的值
                this.status = status;
				//给search_obj对象添加一个status属性值,传递给服务器,服务器在判断这个数值是否与数值对象中的值相同(看图二中有status属性),就是用这个属性与传递的值进行判断
                search_obj.status = status;
                this.start();
            }
        },
        mounted: function () {
            this.start();
        }
    })
</script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_39148344/article/details/84848530