找回密码
 立即注册

QQ登录

只需一步,快速开始

phoben 讲师达人认证 悬赏达人认证 活字格认证

论坛元老

423

主题

1727

帖子

4736

积分

论坛元老

格友工作室

积分
4736

时代开发者征文活动微信认证勋章悬赏达人讲师达人活字格认证活字格高级认证

QQ
phoben 讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-1-18 17:37  /   查看:2266  /  回复:2
本帖最后由 phoben 于 2022-1-18 17:54 编辑

自从新版本支持变量以后,开发前端JS类型插件,就一直不能在插件里很好使用这一点(上次在公司当面提过),现在说一下具体需求:

场景:我正在将钉钉、企业微信的所有前端JSAPI都封装起来,如下:



前端JS插件都有一个共同的特点,就是“回调命令”,也就是每一个API都不是同步的
比如“选择成员”的插件,是用户选完了才返回选择的数据,例如:

  1. wx.invoke('selectExternalContact', {
  2.     "filterType": 0,
  3. }, function (res) {
  4.     if (res.err_msg == "selectExternalContact:ok") {
  5.         userIds = res.userIds;
  6.         //这个回调函数内获取用户选择的数据.
  7.     }
  8. })
复制代码


几乎所有前端插件都是回调的,不是同步函数。
如果用户在插件命令后面紧跟一个命令读取,是读取不到的

所以最简单的解决办法如下:




但是在这个“完成命令”里面,我想预置一个参数,让用户在设计器中,提前就可以设计完成后的逻辑



选择后类似这样的效果(也可以开发者直接预置一个变量子命令设计器里,不需要用户提供变量名称)


那我在插件中就可以在回调完成的位置,将用户选择的数据,赋值给这个用户自己定义的变量身上就行了



可能您会说外面直接指定一个单元格,里面直接引用不就可以了。
就像这样:


但实际上是行不通的,经过测试,如果这个单元格没有定义一个名字(如=A1),子命令里是引用不到的。
如果有名字(如=users)就可以引用,我现在就用这个方法,所以带来的不便有亮点。
1、单元格非得要申明名称,不然会报错;
2、既然都申明名称了,为什么不直接使用变量?写到页面,再从页面读取,这是消耗性能的。


所以请大佬帮我出个方案,我这几十个插件,全部都有这个问题。
服务端命令插件倒是没有此问题,因为已经有操纵用户变量的API





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

2 个回复

倒序浏览
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-1-19 18:21:05
沙发
大佬,下个版本会更新一波接口,兴许会有大佬想要的接口公开,大佬可以关注下下个版本的更新信息~
回复 使用道具 举报
Chelsey.Wang讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-1-20 11:33:35
板凳
lh123 发表于 2022-1-19 22:34
什么时候的事?

您好,活字格大版本的更新一般是在每年的4月和10月,8.0预计大概是在今年的4月份左右推出~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部