nimble-ui
Version:
82 lines (80 loc) • 3.02 kB
JavaScript
import { callFn, getBackData, toPascal } from 'nimble-lib';
/**
* 分页的mixin
*
* @param {Object} options 选项
* @param {String} options.pageNum 页码的key
* @param {String} options.pageSize 每面数据的key
* @param {String} options.total 总数量的key
* @param {String} options.list 列表的key
* @param {Object} options.config 默认值
* @export
* @returns {Object}
*/
export default function paging(options) {
options = options || {};
let pageNum = 'my' + toPascal(options['pageNum'] || 'pageNum');
let pageSize = 'my' + toPascal(options['pageSize'] || 'pageSize');
let total = 'my' + toPascal(options['total'] || 'total');
let list = 'my' + toPascal(options['list'] || 'list');
return {
data() {
let data = {};
data[pageNum] = 1;
data[pageSize] = 10;
data[total] = 0;
data[list] = [];
return Object.assign(data, callFn(options.config, [], this) || {});
},
created() {
let _that = this;
if (!options || callFn(options.notCreateInit, [], _that) !== true) {
_that[list] = [];
let res = callFn(options.createCallback, [_that[pageNum], _that[pageSize]], _that);
if (res !== false) {
getBackData(_that.getList, [_that[pageNum], _that[pageSize]], _that).then((back) => {
if (back instanceof Array) {
_that[list] = back;
}
});
}
}
},
watch: {
/**
* 监听pageNum改变
* @param {any} nowVal 变化后数据
* @param {any} oldVal 变化前的值
*/
[pageNum] () {
let _that = this;
_that[list] = [];
let res = callFn(options.pageNumCallback, [_that[pageNum], _that[pageSize]], _that);
if (res !== false) {
getBackData(_that.getList, [_that[pageNum], _that[pageSize]], _that).then((back) => {
if (back instanceof Array) {
_that[list] = back;
}
});
}
},
/**
* 监听pageSize的改变
* @param {any} nowVal 变化后数据
* @param {any} oldVal 变化前的值
*/
[pageSize] () {
let _that = this;
_that[list] = [];
let res = callFn(options.pageSizeCallback, [_that[pageNum], _that[pageSize]], _that);
if (res !== false) {
getBackData(_that.getList, [_that[pageNum], _that[pageSize]], _that).then((back) => {
if (back instanceof Array) {
_that[list] = back;
}
});
}
}
}
};
}