since 1.1.6
之前的版本,配置的 api 默认就会具备自动刷新功能,除非显式的配置 autoRefresh: false
来关闭。自动刷新主要通过跟踪 api 的 url 属性来完成的,如果 url 中了使用了某个变量,而这个变量发生变化则会触发自动刷新。 也就说这个 url 地址,既能控制 api 请求的 query 参数,同时又起到跟踪变量重新刷新接口的作用。这个设定大部分情况下都是合理的,但是有时候想要跟踪 url 参数以外的变量就做不到了。所以新增了此属性 trackExpression
,显式的配置需要跟踪的变量如:
如果
trackExpression
追踪的数据是对象数据,可以使用数据映射的json
方法将数据序列化之后再比较,例如"trackExpression": "${fieldToTrack|json}"
文档只有监听一个的例子。遇到的场景需要追踪多个数据变化再更新。
可以这么设置属性
"trackExpression": "${a},${c}"
给个amis官网json例子改改:
{
"type": "page",
"body": {
"title": "",
"type": "form",
"mode": "horizontal",
"body": [
{
"label": "选项1",
"type": "radios",
"name": "a",
"inline": true,
"options": [
{
"label": "选项A",
"value": 1
},
{
"label": "选项B",
"value": 2
},
{
"label": "选项C",
"value": 3
}
]
},
{
"label": "选项3",
"type": "radios",
"name": "c",
"inline": true,
"options": [
{
"label": "选项A",
"value": 1
},
{
"label": "选项B",
"value": 2
},
{
"label": "选项C",
"value": 3
}
]
},
{
"label": "选项2",
"type": "select",
"size": "sm",
"name": "b",
"source": {
"method": "get",
"url": "/amis/api/mock2/options/level2",
"trackExpression": "${a},${c}"
},
"description": "切换选项1
的值,会触发选项2
的source
接口重新拉取"
}
],
"actions": []
}
}
这就实现了监听两个数据 a和c 变化再更新。发现还有一种方式:
"trackExpression": "${a+c}"
祝好,帮到你,点赞哈