UNPKG

olympus-r-egret

Version:

Olympus的Egret表现层库

47 lines (46 loc) 1.93 kB
/** * @author Raykid * @email initial_r@qq.com * @create date 2017-10-17 * @modify date 2017-10-17 * * UI工具集 */ import * as tslib_1 from "tslib"; /** * 包装EUI的DataGroup组件,使用传入的处理函数处理每个渲染器更新的逻辑 * * @export * @param {eui.DataGroup} group 被包装的DataGroup组件 * @param {(data?:any, renderer?:any)=>void} rendererHandler 渲染器处理函数,每次数据更新时会被调用,处理单个渲染器的渲染逻辑 * @param {(datas?:eui.ICollection, group?:eui.DataGroup)=>void} [updateHandler] 数据更新处理函数,每次显示更新时会被调用,处理列表显示更新后的渲染逻辑 */ export function wrapEUIList(group, rendererHandler, updateHandler) { group.itemRenderer = ItemRenderer.bind(null, group.itemRendererSkinName, rendererHandler); if (updateHandler) { // 监听group尺寸是否改变 var enterFrameHandler = function () { if (group.contentWidth > 0 || group.contentHeight > 0) { // 移除事件监听 group.removeEventListener(egret.Event.ENTER_FRAME, enterFrameHandler, this); // 调用回调 updateHandler(group.dataProvider, group); } }; group.addEventListener(egret.Event.ENTER_FRAME, enterFrameHandler, this); } } var ItemRenderer = /** @class */ (function (_super) { tslib_1.__extends(ItemRenderer, _super); function ItemRenderer(skinName, rendererHandler) { var _this = _super.call(this) || this; _this.skinName = skinName; _this._rendererHandler = rendererHandler; return _this; } ItemRenderer.prototype.dataChanged = function () { _super.prototype.dataChanged.call(this); this._rendererHandler(this.data, this); }; return ItemRenderer; }(eui.ItemRenderer));