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;
|
|||
|
}
|