SchemaSettingsManager

实例方法

schemaSettingsManager.add()

添加 SchemaSettings 实例。

  • 类型
1class SchemaSettingsManager {
2    add<T = any>(...schemaSettingList: SchemaSetting<T>[]): void
3}
  • 示例
1const mySchemaSettings = new SchemaSetting({
2  name: 'MySchemaSettings',
3  title: 'Add block',
4  items: [
5    {
6      name: 'demo',
7      type: 'item',
8      componentProps:{
9          title: 'Demo'
10      }
11    }
12  ],
13});
14
15class MyPlugin extends Plugin {
16    async load() {
17        this.app.schemaSettingsManager.add(mySchemaSettings);
18    }
19}

schemaSettingsManager.get()

获取一个 SchemaSettings 实例。

  • 类型
1class SchemaSettingsManager {
2    get<T = any>(name: string): SchemaSetting<T> | undefined
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3       const mySchemaSettings = this.app.schemaSettingsManager.get('MySchemaSettings');
4    }
5}

schemaSettingsManager.getAll()

获取所有的 SchemaSettings 实例。

  • 类型
1class SchemaSettingsManager {
2    getAll(): Record<string, SchemaInitializer<any, any>>
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3        const list = this.app.schemaSettingsManager.getAll();
4    }
5}

app.schemaSettingsManager.has()

判断是否有存在某个 SchemaSettings 实例。

  • 类型
1class SchemaSettingsManager {
2    has(name: string): boolean
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3        const hasMySchemaSettings = this.app.schemaSettingsManager.has('MySchemaSettings');
4    }
5}

schemaSettingsManager.remove()

移除 SchemaSettings 实例。

  • 类型
1class SchemaSettingsManager {
2    remove(name: string): void
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3        this.app.schemaSettingsManager.remove('MySchemaSettings');
4    }
5}

schemaSettingsManager.addItem()

添加 SchemaSettings 实例的 Item 项,其和直接 schemaInitializer.add() 方法的区别是,可以确保在实例存在时才会添加。

  • 类型
1class SchemaSettingsManager {
2    addItem(schemaInitializerName: string, itemName: string, data: Omit<SchemaInitializerItemType, 'name'>): void
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3        // 方式1:先获取,再添加子项,需要确保已注册
4        const mySchemaSettings = this.app.schemaSettingsManager.get('MySchemaSettings');
5        if (mySchemaSettings) {
6            mySchemaSettings.add('b', { type: 'item', componentProps:{ title: 'B' } })
7        }
8
9        // 方式2:通过 addItem,内部确保在 mySchemaSettings 注册时才会添加
10        this.app.schemaSettingsManager.addItem('MySchemaSettings', 'b', {
11            type: 'item',
12            componentProps:{ title: 'B' }
13        })
14    }
15}

schemaSettingsManager.removeItem()

移除 实例的 Item 项,其和直接 schemaInitializer.remove() 方法的区别是,可以确保在实例存在时才会移除。

  • 类型
1class SchemaSettingsManager {
2    removeItem(schemaInitializerName: string, itemName: string): void
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3        // 方式1:先获取,再删除子项,需要确保已注册
4        const mySchemaSettings = this.app.schemaSettingsManager.get('MySchemaSettings');
5        if (mySchemaSettings) {
6            mySchemaSettings.remove('a')
7        }
8
9        // 方式2:通过 addItem,内部确保在 mySchemaSettings 注册时才会移除
10        this.app.schemaSettingsManager.remove('MySchemaSettings', 'a')
11    }
12}