SchemaInitializerManager
实例方法
schemaInitializerManager.add()
添加 SchemaInitializer 实例。
1class SchemaInitializerManager {
2 add<P1 = any, P2 = any>(...schemaInitializerList: SchemaInitializer<P1, P2>[]): void
3}
1const myInitializer = new SchemaInitializer({
2 name: 'MyInitializer',
3 title: 'Add block',
4 items: [
5 {
6 name: 'demo',
7 type: 'item',
8 title: 'Demo'
9 }
10 ],
11});
12
13class MyPlugin extends Plugin {
14 async load() {
15 this.app.schemaInitializerManager.add(myInitializer);
16 }
17}
schemaInitializerManager.get()
获取一个 SchemaInitializer 实例。
1class SchemaInitializerManager {
2 get<P1 = ButtonProps, P2 = {}>(name: string): SchemaInitializer<P1, P2> | undefined
3}
1class MyPlugin extends Plugin {
2 async load() {
3 const myInitializer = this.app.schemaInitializerManager.get('MyInitializer');
4 }
5}
schemaInitializerManager.getAll()
获取所有的 SchemaInitializer 实例。
1class SchemaInitializerManager {
2 getAll(): Record<string, SchemaInitializer<any, any>>
3}
1class MyPlugin extends Plugin {
2 async load() {
3 const list = this.app.schemaInitializerManager.getAll();
4 }
5}
app.schemaInitializerManager.has()
判断是否有存在某个 SchemaInitializer 实例。
1class SchemaInitializerManager {
2 has(name: string): boolean
3}
1class MyPlugin extends Plugin {
2 async load() {
3 const hasMyInitializer = this.app.schemaInitializerManager.has('MyInitializer');
4 }
5}
schemaInitializerManager.remove()
移除 SchemaInitializer 实例。
1class SchemaInitializerManager {
2 remove(name: string): void
3}
1class MyPlugin extends Plugin {
2 async load() {
3 this.app.schemaInitializerManager.remove('MyInitializer');
4 }
5}
schemaInitializerManager.addItem()
添加 SchemaInitializer 实例的 Item 项,其和直接 schemaInitializer.add() 方法的区别是,可以确保在实例存在时才会添加。
1class SchemaInitializerManager {
2 addItem(schemaInitializerName: string, itemName: string, data: Omit<SchemaInitializerItemType, 'name'>): void
3}
1class MyPlugin extends Plugin {
2 async load() {
3 // 方式1:先获取,再添加子项,需要确保已注册
4 const myInitializer = this.app.schemaInitializerManager.get('MyInitializer');
5 if (myInitializer) {
6 myInitializer.add('b', { type: 'item', title: 'B' })
7 }
8
9 // 方式2:通过 addItem,内部确保在 MyInitializer 注册时才会添加
10 this.app.schemaInitializerManager.addItem('MyInitializer', 'b', {
11 type: 'item',
12 title: 'B'
13 })
14 }
15}
schemaInitializerManager.removeItem()
移除 实例的 Item 项,其和直接 schemaInitializer.remove() 方法的区别是,可以确保在实例存在时才会移除。
1class SchemaInitializerManager {
2 removeItem(schemaInitializerName: string, itemName: string): void
3}
1class MyPlugin extends Plugin {
2 async load() {
3 // 方式1:先获取,再删除子项,需要确保已注册
4 const myInitializer = this.app.schemaInitializerManager.get('MyInitializer');
5 if (myInitializer) {
6 myInitializer.remove('a')
7 }
8
9 // 方式2:通过 addItem,内部确保在 MyInitializer 注册时才会移除
10 this.app.schemaInitializerManager.remove('MyInitializer', 'a')
11 }
12}