3.2.6. extControl#

Это внешний компонент, предназначенный для отображения данных выборки.

Шаблон серверного кода внешнего компонента#
  class Gs3_ExtControlExampleAbi extends ExtControlAbi {

  }
Шаблон клиентского кода внешнего компонента#
 class MyControl {
     constructor(name) {
         this.name = name;
         this.isAttached = false;
     }

     init(controlContext) {
         this.controlContext = controlContext;
         this.unsubscribeNodeChanges = this.controlContext.extController.subscribeNodeChanges({
             onSubscribe(rootNode) {},
             beforeVisitModel() {},
             beforeVisitNode(pNode) {},
             beforeAddToParent(pNode, parentNode) {},
             afterLoadNode(pNode) {},
             afterVisitNode(pNode) {},
             beforeCleanNode(pNode, parentNode) {},
             afterVisitModel() {},
             beforeConsignmentVersionChange() {},
             afterConsignmentVersionChange() {}
         });
     }

     destroy() {
         this.unsubscribeNodeChanges();
         this.controlContext = null;
     }

     attach(parent) {
         this.controlParent = parent;
         // Здесь создаём в `composerParent` необходимые HTML-элементы.
         this.isAttached = true;
       }

     detach() {
         this.isAttached = false;
         while (this.controlParent.lastChild) this.controlParent.removeChild(this.controlParent.lastChild);
         this.controlParent = null;
     }
 }
Пример кода Avm#
 1  <representation name="ExtControl" editMode="edit">
 2      <layout>
 3          <simpleComposer>
 4              <frame filter.isVisible="false">
 5                  <extControl name="gs3/ExtControlExample"
 6                              backendClass="ru.bitec.app.gs3.test.extctrl.Gs3_ExtControlExampleAbi"
 7                              frontendUri="ru/bitec/app/gs3/test/extctrl/web/main.js"/>
 8              </frame>
 9          </simpleComposer>
10      </layout>
11  </representation>

See also

  1. Метаданные ExtControl

  2. Core-интерфейс CoreExtControl

  3. JS-api ExtControl