企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
1. 首先需要在视图标签中增加 opcode 属性,属性值是一个有效的后端操作码,比如后端开发人员已经定义好了一个查询库存的表单操作,操作码为“querystock”,那么前端视图可以这样来写: `<button opcode="querystock">查询库存</button>` 到此为止,当鼠标点击以上按钮时,系统就能自动向服务器发起一个请求了。 。。。。。。 那么问题来了 (1) 怎么向服务器传递参数呢?比如:查询某个商品的库存量,需要传递一个商品Id。 (2) 怎么接收服务器返回给我数据呢?比如:我要拿到服务器返回的库存量后渲染在另外一个html标签上面。 2. 设置请求参数 和 获取响应数据,在前端 js 插件中提供了两个事件 (1) 表单按钮操作前事件 onBeforeDoOperation ,可以在此事件中设置请求参数,事件定义如下: ![](https://box.kancloud.cn/480e79da2b99a47fa0b5b5837f7080d4_469x219.png) (2) 表单按钮操作后事件 onAfterDoOperation ,可以在此事件中获取响应数据,事件定义如下: ![](https://box.kancloud.cn/a0c06866499ff49907daf51e037e5928_488x208.png) 那怎么来使用呢? 只需要在我们的前端 js 插件中重写这两个事件,然后在事件中处理即可,如下图所示: ![](https://box.kancloud.cn/c59b4d224ec788652df724b502a205fe_1050x855.png) 完整的前端 js 插件代码如下: ~~~ ///<reference path="/fw/js/consts.js" /> /* @ sourceURL=/fw/js/ydj/bas/bas_product.js */ ; (function () { var bas_product = (function (_super) { var _child = function (args) { var that = this; _super.call(this, args); }; __extends(_child, _super); //表单按钮操作前事件 _child.prototype.onBeforeDoOperation = function (e) { if (!e || !e.opcode) return; var that = this; switch (e.opcode) { //对特定的操作设置请求参数 case 'querystock': //设置商品Id e.result = { productId: '商品Id' }; break; } }; //表单按钮操作后事件 _child.prototype.onAfterDoOperation = function (e) { if (!e || !e.opcode) return; var that = this; var isSuccess = e.result.operationResult.isSuccess; //成功标志位 var srvData = e.result.operationResult.srvData; //srvData 数据结构以后端返回为准,此处假定后端返回的是商品库存量 switch (e.opcode) { //获取特定操作的响应数据 case 'querystock': if (isSuccess) { //比如将后端返回的库存量用一个对话框来显示:螺丝刀的库存量为:666 yiDialog.a('螺丝刀的库存量为:{1}'.format(srvData)); } break; } }; return _child; })(BasePlugIn); window.bas_product = window.bas_product || bas_product; })(); ~~~