为了方便与 GS 边缘逻辑进行交互,前端封装了 EventService 类与GS进行数据交换。

引入方法

  1. // pda
  2. import { EventService } from '@cniot/cainiao-appx/es/pda';
  3. // core
  4. import { EventService } from '@cniot/cainiao-appx/es/core';

使用说明

  • GS 代码 ```javascript const barcode = labor.scan(“/pages/abc/index.bundle.js”, { title:”hello appx” });

sys.pring(barcode) // barcode 123

  1. - 前端页面
  2. ```javascript
  3. // /pages/abc/index.js
  4. export default {
  5. data: {
  6. title:""
  7. },
  8. onInit(res){
  9. this.es = new EventService(res);
  10. const data = tihs.es.getData(); // {title:"hello appx"}
  11. this.data.title = data.title;
  12. Bridge.onScan(()=>{
  13. // 调用 .onNext() 入参将会回传给 gs
  14. this.es.onNext("bacode 123");
  15. })
  16. }
  17. }

接口列表

const es = new EventService(res);

.onNext

当gs使用 labor.scan labor.confirm 等指令下发页面的时候,onNext 方法直接把控制权交换给 gs

  • gs ```javascript // 1 const barcode = labor.scan(“/pages/abc/index.bundle.js”, {}) sys.print(“barcode:”+ barcode); // barcode: abc

// 2 const isConfirm = labor.confirm(“/pages/abc/index.bundle.js”, {}) sys.print(“isConfirm:”+ isConfirm) // isConfirm: false


- Javascript
```javascript
// 1
es.onNext('abc')

// 2
es.onNext(false)

.onOption

当 gs 下发分支操作的时候,前端通过 onOption 触发

  • gs ```javascript “use event”

@slot function a(){ sys.print(“a”) }

@slot function b(){ sys.pring(“b”) }

const barcode = labor.scan(“/pages/abc/index.bundle.js”, {}, { “分支a”:”a”, “分支b”:”b” });


- Javascript
```javascript
es.onOption("分支a");

在 pda 中通常的处理方式

export default {
    data:{},
  onInit(res){
    this.es = new EventService(res);
    Object.assign(this.data, this.es.getData());

    // 设置 menus 菜单
    Bridge.ui.setMenus( this.es.getMenus(), (event)=>{
      // 点击 munus 菜单后触发 onOption
        this.es.onOption(event.option)
    })
  }
}

.update

gs多次下发同一个页面或更新当前页面数据都会触发页面的onUpdate事件。通过es.update来更新数据,然后拿到最新的指令数据,再做业务处理。

export default {
    data: {},
  onUpdate(res){
    this.es.update(res);
    const newDate = this.es.getData();
    console.log(newDate)
  }
}

.getMenus

获取gs下发的分支操作。在pda中通常放在menu菜单中

  • gs

    labor.scan("xxx", {}, {
      "分支1":"a",
    "分支2":"b"
    })
    
  • Javascript

    export default {
      data: {},
    onInit(res){
      const es = new EventService(res);
          const menus = es.getMenus()// ["分支1", "分支2"]
      // 配合 Bridge 快速绑定系统 menu 键盘
      Bridge.ui.setMenus( menus, (event)=>{
          es.onOption(event.option);
      })
    }
    }
    

    .autoEventService

    把处理权限交换给系统层。
    由于gs的架构中,前端不感知业务逻辑。页面跳转 应用退出 都是由服务端下发指令。在 .onNext .onOption 后的动作都应该交给系统来处理。 ```javascript

// .onNext 允许传入第二个参数获得gs的下一步的指令,处理完逻辑后再把指令交换给系统。 .onNext(“barcode 123”, (res)=>{ this.es.autoEventService(res); }) ```