index-controller.js 3.84 KB
/**
 * 首页
 */
define(
    "order/index-controller",
    [
        'mk7/controller',
        'mk7/url',
        'mk7/utils',
    ],

    function(ctrl, url, utils) {

        var $$ = Dom7;
        var t7 = Template7;
        var ctrl = new ctrl();

        var pageURL = 'order/default/order-list';
        ctrl.run = function () {
            var me = this;
            me.setPageTitle("订单列表");
            me.tab = me.params.tab;

            me.page = 0;
            me.nodata = '';
            me.loading = false;
            me.pageCount = 1;
            me.render({tab:me.tab});
            me.loadPage()
        }
        ctrl.bindEvents = function () {
            var me = this;
            console.log("bindEvents");
            me.tabEvent();
            me.bindScrollEvent();
            me.addEvent();
        }

        ctrl.tabEvent = function() {
            $$('.tab-cls').click(function(e) {
                var url = $$(this).attr('data-href');
                window.location.replace(url);
            })
        }
        ctrl.handleNodata = function(){
            var me = this;
            me.nodata = '没有数据了';
            var e = $$('.nodata');
            if(0 == e.length){
                $$('#index .order-list').append('<div class="nodata">'+me.nodata+'</div>');
            }
            me.app.detachInfiniteScroll('.infinite-scroll');
            $$('#index .infinite-scroll-preloader').remove();
            return;
        }
        ctrl.loadPage = function () {
            var me = this;
            me.loading = true;

            if (me.page >= me.pageCount){
                me.handleNodata();
                return ;
            }
            var data = {status:me.tab}
            data.page = me.page + 1;
            data = me.csrf(data);
            $$.ajax({
                method : "GET",
                url: url.to(pageURL),
                data : data,
                dataType : "json",
                beforeSend : function(){
                    me.showIndicator();
                },
                success : function(e){
                    if(true == e.success){
                        if(utils.isDefined(e.page)){
                            me.page = parseInt(e.page);
                        }
                        if(utils.isDefined(e.page_count)){
                            me.pageCount = parseInt(e.page_count);
                        }
                        me.renderItems(e.items, true);
                    }
                },
                error : function(e){},
                complete : function(e){
                    me.hideIndicator();
                    me.loading = false;
                },
            });
        }
        ctrl.bindScrollEvent = function() {
            var me = this;
            me.app.attachInfiniteScroll('#index .infinite-scroll');
            $$('#index .infinite-scroll').on('infinite', function () {
                // 如果正在加载,则退出
                //console.log(me.loading);
                if (me.loading) {
                    return;
                }
                if (me.nodata) {

                    return;
                }
                me.loadPage();
            });
        }
        ctrl.renderItems = function(items, append){
            var me = this;
            var list = $$('#index .order-list');
            var ele = $$('script#order-item-template');
            var compiled = t7.compile(ele.html());

            var doms = compiled({'list':items});
            if( false == append){//填充还是重置数据
                list.html('');
                list.append(doms);
            }
            list.append(doms);
        }
        ctrl.addEvent = function() {
            $$('#index .add-btn-cls').click(function(e) {
                window.location.href = url.to('order/#submit');
            })
        }
        return ctrl;
    }
);