module els { export interface PropertyRender { component: Component; propertyName: string; renderDOM: HTMLElement; baseHTML: string; } export class ComponentPropertyMaps { static componentPropertys: any; /** * @param componentName 组件名 * @param propertyName 属性名 * @param newValue 更新属性的新值 */ static getPropertyRender(componentName: string, propertyName: string, newValue?: (string | number | boolean | (number | string | boolean)[])): PropertyRender { if (!componentName || !propertyName || !this.componentPropertys) return null; var key: string = componentName + "_" + propertyName; var propertyRender: PropertyRender = this.componentPropertys[key]; if (propertyRender) return propertyRender; return null; } static addPropertyRender(component: Component, propertyName: string, renderDOM: HTMLElement) { if (this.componentPropertys === undefined) this.componentPropertys = {}; var key: string = egret.getQualifiedClassName(component.constructor) + "_" + propertyName; if (this.componentPropertys[key] === undefined) { var propertyRender: PropertyRender = { component: component, propertyName: propertyName, renderDOM: renderDOM, baseHTML: "" }; this.componentPropertys[key] = propertyRender; this.componentPropertys[key].baseHTML = renderDOM.innerHTML; } else { this.componentPropertys[key].renderDOM = renderDOM; } if (renderDOM) { renderDOM.onchange = function (event) { //console.log(event); }; renderDOM.onclick = function (event) { //console.log(event); } } } static removePropertyRender(component: Component, propertyName: string) { if (!component || !propertyName || !this.componentPropertys) return; var key: string = egret.getQualifiedClassName(component.constructor) + "_" + propertyName; delete this.componentPropertys[key]; } } }