64 lines
1.6 KiB
TypeScript
64 lines
1.6 KiB
TypeScript
import { ComponentOption } from '../../interface';
|
||
import View from '../view';
|
||
/** Component controller class type define */
|
||
export declare type ControllerCtor<O = any> = new (view: View) => Controller<O>;
|
||
/**
|
||
* Component Controller 规范需要定义的基类
|
||
* 1. 规范的 option 输入
|
||
* 2. 统一的信息获取 API
|
||
* 3. 明确定义的组件事件(名称、数据)
|
||
*/
|
||
export declare abstract class Controller<O = unknown> {
|
||
/** 是否可见 */
|
||
visible: boolean;
|
||
protected view: View;
|
||
/** option 配置,不同组件有自己不同的配置结构 */
|
||
protected option: O;
|
||
/** 所有的 component */
|
||
protected components: ComponentOption[];
|
||
constructor(view: View);
|
||
abstract get name(): string;
|
||
/**
|
||
* init the component
|
||
*/
|
||
abstract init(): any;
|
||
/**
|
||
* render the components
|
||
*/
|
||
abstract render(): any;
|
||
/**
|
||
* update the components
|
||
*/
|
||
/**
|
||
* do layout
|
||
*/
|
||
abstract layout(): any;
|
||
/**
|
||
* 组件的更新逻辑
|
||
* - 根据字段为标识,为每一个组件生成一个 id,放到 option 中
|
||
* - 更新的时候按照 id 去做 diff,然后对同的做处理
|
||
* - 创建增加的
|
||
* - 更新已有的
|
||
* - 销毁删除的
|
||
*/
|
||
abstract update(): any;
|
||
/**
|
||
* clear
|
||
*/
|
||
clear(): void;
|
||
/**
|
||
* destroy the component
|
||
*/
|
||
destroy(): void;
|
||
/**
|
||
* get all components
|
||
* @returns components array
|
||
*/
|
||
getComponents(): ComponentOption[];
|
||
/**
|
||
* change visibility of component
|
||
* @param visible
|
||
*/
|
||
changeVisible(visible: boolean): void;
|
||
}
|