mbui.define(['tool'], function (exports) { let tool = mbui.tool; //html转义,防止XSS function escapeHtml(text) { var map = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }; return text.replace(/[&<>"']/g, function(m) { return map[m]; }); } var LoadData = function () { this.config = { elem: "#listBox", url: "", where: {}, limit: 10, scroll: 1, template: function (data) { return JSON.parse(data); } }; this.loaded = 0; this.page = 1; this.count = 0; this.total = 0; }; // 初始化 LoadData.prototype.init = function (options) { var that = this; $.extend(true, that.config, options); var elem = $(that.config.elem); elem.html('

暂无数据
努力加载中
—— ● ——
'); if(that.config.scroll==2){ $('#root').scroll(function(){ if ($(this).scrollTop() + $('#root').height() >= $('#app').height()-10) { // 滚动到页面底部时加载更多数据 if (that.total < that.count && that.loaded == 0){ that.ajax(); } } }); } else{ // 监听滚动事件 $(window).scroll(function () { if ($(window).scrollTop() + $(window).height() >= $(document).height()-10) { // 滚动到页面底部时加载更多数据 if (that.total < that.count && that.loaded == 0){ that.ajax(); } } }); } that.ajax(); }; LoadData.prototype.ajax = function () { var that = this; var elem = $(that.config.elem); // 发送请求获取数据 $.ajax({ url: that.config.url + '?page=' + that.page + '&limit=' + that.config.limit, type: 'GET', data: that.config.where, beforeSend: function () { // 显示加载按钮 that.loaded = 1; elem.find('.load-data-loading').show(); elem.find('.load-data-end').hide(); }, success: function (res) { that.count=res.count; that.total+=res.data.length; elem.find('.load-data-none').addClass('load-data-'+that.count); if (res.count > 0) { that.page++; $.each(res.data, function (index, item) { // 转义JSON对象中的字符串值,防止XSS for (var key in item) { if (typeof item[key] === 'string') { item[key] = escapeHtml(item[key]); } } // 创建列表项并添加到列表中 var listItem = that.config.template(item); elem.find('.load-data-container').append(listItem); }); } }, complete: function () { that.loaded = 0; elem.find('.load-data-loading').hide(); elem.find('.load-data-end').show(); } }); } // 导出loadData模块 exports('loadData', function (options) { var loadData = new LoadData(); loadData.init(options); }); });