为了方便与 GS 边缘逻辑进行交互,前端封装了 EventService
类与GS进行数据交换。
引入方法
// pda
import { EventService } from '@cniot/cainiao-appx/es/pda';
// core
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
- 前端页面
```javascript
// /pages/abc/index.js
export default {
data: {
title:""
},
onInit(res){
this.es = new EventService(res);
const data = tihs.es.getData(); // {title:"hello appx"}
this.data.title = data.title;
Bridge.onScan(()=>{
// 调用 .onNext() 入参将会回传给 gs
this.es.onNext("bacode 123");
})
}
}
接口列表
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); }) ```