本帖最后由 phoben 于 2022-1-18 17:54 编辑
自从新版本支持变量以后,开发前端JS类型插件,就一直不能在插件里很好使用这一点(上次在公司当面提过),现在说一下具体需求:
场景:我正在将钉钉、企业微信的所有前端JSAPI都封装起来,如下:
前端JS插件都有一个共同的特点,就是“回调命令”,也就是每一个API都不是同步的
比如“选择成员”的插件,是用户选完了才返回选择的数据,例如:
- wx.invoke('selectExternalContact', {
- "filterType": 0,
- }, function (res) {
- if (res.err_msg == "selectExternalContact:ok") {
- userIds = res.userIds;
- //这个回调函数内获取用户选择的数据.
- }
- })
复制代码
几乎所有前端插件都是回调的,不是同步函数。
如果用户在插件命令后面紧跟一个命令读取,是读取不到的
所以最简单的解决办法如下:
但是在这个“完成命令”里面,我想预置一个参数,让用户在设计器中,提前就可以设计完成后的逻辑
选择后类似这样的效果(也可以开发者直接预置一个变量子命令设计器里,不需要用户提供变量名称)
那我在插件中就可以在回调完成的位置,将用户选择的数据,赋值给这个用户自己定义的变量身上就行了
可能您会说外面直接指定一个单元格,里面直接引用不就可以了。
就像这样:
但实际上是行不通的,经过测试,如果这个单元格没有定义一个名字(如=A1),子命令里是引用不到的。
如果有名字(如=users)就可以引用,我现在就用这个方法,所以带来的不便有亮点。
1、单元格非得要申明名称,不然会报错;
2、既然都申明名称了,为什么不直接使用变量?写到页面,再从页面读取,这是消耗性能的。
所以请大佬帮我出个方案,我这几十个插件,全部都有这个问题。
服务端命令插件倒是没有此问题,因为已经有操纵用户变量的API
|