controller.js 1.9 KB
/*
 * @Author: Targaryen
 * @Date: 2017-04-26 17:19:19
 * @Last Modified by: Targaryen
 * @Last Modified time: 2017-05-02 14:40:52
 */
'use strict';

const lazyLoad = require('yoho-jquery-lazyload');

import {Controller} from 'yoho-mvc';
import {
    ListView
} from './view';
import {
    Guang
} from './model';

class IndexController extends Controller {
    constructor() {
        super();

        lazyLoad($('img.lazy'));

        this.listView = new ListView();
        this.guangModel = new Guang();

        this.page = 1;
        this.onLoading = false;

        this.listView.on('tabchange', this.tabChange.bind(this));
        this.listView.on('loadmore', this.loadMore.bind(this));
    }

    /**
     * Tab 切换
     * @param {*} e
     * @param {*} type
     */
    tabChange(e, type) {
        this.page = 1;
        this.onLoading = false;
        this.guangModel.fetchList({
            type: type,
            page: this.page
        }).then(result => {
            let $result = $(result);

            lazyLoad($result.find('img.lazy'));
            this.listView.listChange($result);
        });
    }

    /**
     * 加载更多
     */
    loadMore(e, type) {
        if (this.onLoading === false) {
            this.onLoading = true;
            this.guangModel.fetchList({
                type: type,
                page: ++this.page
            }).then(result => {
                let noResult = !result || result.length < 1 || (result.list && result.list.length < 1);

                if (noResult) {
                    this.listView.listAppend('<div class="search-divide">没有更多内容了...</div>');
                    return false;
                }

                let $result = $(result);

                lazyLoad($result.find('img.lazy'));
                this.listView.listAppend($result);

                this.onLoading = false;
            });
        }
    }
}

module.exports = IndexController;