Skip to content

插件控制器使用指南

API 预览

SDK 中的控制器 (controllers) 可在 API 文档Modules > UIExtension > controllers 部分找到。其中,定义在 addons 中的 controller 汇总在 Modules > UIExtension > controllers > UIXAddon 部分。

控制器 (controller) 的使用

下面将为您详解:

提示:点击 这里 了解插件中可复用控制器列表。

在模板中使用 controller

page-editor:AddTextController 为例来说明如何在模板中使用 controller.

在初始化过程中使用 controller

javascript
new PDFUI({
    fragments: [{
        // The target element to be manipulated
        target: 'add-text',
        // The type of operation, here is replacement
        action: UIExtension.UIConsts.FRAGMENT_ACTION.REPLACE,
        // Template,here the "@require-modules" directive is used to handle lazy loading   
        template: `<ribbon-button @controller="page-editor:AddTextController" @require-modules="page-editor"></ribbon-button>`,
    }]
});

或者

javascript
new PDFUI({
    fragments: [{
        // The target element to be manipulated
        target: 'add-text',
        // The type of operation, here is replacement
        action: UIExtension.UIConsts.FRAGMENT_ACTION.REPLACE,
        // Template,here the "@async" directive is used to handle lazy loading  
        templage: `<ribbon-button @controller="page-editor:AddTextController" @async></ribbon-button>`,
    }]
});

在初始化之后使用 controller

javascript
// After initialization, use the "Component.after" method to add elements after the component
var someComponent = await pdfui.getComponentByName('some-component-name');
someComponent.after(`<ribbon-button @controller="page-editor:AddTextController"></ribbon-button>`);

在配置中使用 controller

我们以 AddImageController 为例,说明如何以基于配置的方式使用 controller。

javascript
new PDFUI({
    fragments: [{
        // The target element to be manipulated
        target: 'image-tool',
        config: {
            // Specify the controller
            callback: UIExtension.controllers.AddImageController
        }
    }]
});

在 addons 中使用 controller 的限制

  1. addons 中的 controller 不能以基于配置的方式使用,只能通过模板使用。这是因为 addon 是异步加载的,当进行配置时,addons 中的 controller 尚未加载完成。因此,只能通过模板来使用,模板是在 addon 加载完成之后才会加载。

  2. addons 中的 controller 不能通过 UIExtension.controllers.SomeController 的方式访问。因为 addon 是异步加载的,无法将 addons 中的 controller 暴露在 UIExtension.controllers 上。