amis 过滤器 pick BUG

eaf3rand  于 2022-12-31  发布在  其他
关注(0)|答案(5)|浏览(219)
描述问题:

过滤器pickBUG问题

截图或视频:
如何复现(请务必完整填写下面内容):
  1. 你是如何使用 amis 的?
    npm
  2. amis 版本是什么?请先在最新 beta 版本测试问题是否存在
    1.5.3
  3. 粘贴有问题的完整 amis schema 代码:
{
  "type": "page",
  "body": {
    "type": "form",
    "debug": true,
    "api": {
      "url": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/mock2/form/saveForm",
      "data": {
        "timeStart":"${select|split|pick:0}",
        "timeEnd":"${select|split|pick:1}"
      }
    },
    "body": [
      {
        "type": "input-date-range",
        "name": "select",
        "label": "日期范围"
      }
    ]
  }
}

amis-formula中代码可能存在问题

function pickValues(names, data) {
    var _a;
    var arr;  
    if (!names || ((arr = names.split(',')) && arr.length < 2)) {
 // 当前names为非string类型时,这里直接就报错了
       var idx = names.indexOf('~');
        if (~idx) {
            var key = names.substring(0, idx);
            var target = names.substring(idx + 1);
            return _a = {},
                _a[key] = resolveVariable(target, data),
                _a;
        }
        return resolveVariable(names, data);
    }
    var ret = {};
    arr.forEach(function (name) {
        var idx = name.indexOf('~');
        var target = name;
        if (~idx) {
            target = name.substring(idx + 1);
            name = name.substring(0, idx);
        }
        setVariable(ret, name, resolveVariable(target, data));
    });
    return ret;
}
mzmfm0qo

mzmfm0qo1#

而且目前过滤器没有try catch 处理,导致很多以前的项目就直接报错了

ukqbszuj

ukqbszuj2#

pick 不能这样用,直接用 nth 就可以了

wqnecbli

wqnecbli3#

pick 不能这样用,直接用 nth 就可以了

关键是以前很多项目内都这样使用了pick,且老版本也支持。升级到1.5.3就不行了

yyhrrdl8

yyhrrdl84#

我也发现 1.5以后的版本很多不兼容问题!

r7s23pms

r7s23pms5#

这个应该与兼容应该没有关系,我翻看了之前版本的 pick 示例与文档,没有说可以这样用,如果能用,也只能说是之前的bug

相关问题