amis/docs/zh-CN/concepts/expression.md
吴多益 0ae04ce946
docs:将文档移动 zh-CN 目录下;为以后支持英文版做准备 (#1309)
* docs:将文档移动 zh-CN 目录下;为以后支持英文版做准备

* 整理 autoFill

* 补充下载最新版本的说明 (#1298)

* fix: 修复在新版 Firefox 下 js sdk 报错 (#1300)

* 删掉可能报错的代码 (#1311)

* fix: 修复 css 变量不支持数字问题 (#1302)

* feat:增加 animation-duration,可以控制所有动画时长,也能用于一次性关闭所有动画效果 (#1303)

* feat:增加 animation-duration,可以控制所有动画时长,也能用于一次性关闭所有动画效果

* 补充文档

* Pageleave (#1310)

* form 添加页面离开提示功能

* 补充文档

Co-authored-by: 2betop <2betop.cn@gmail.com>
Co-authored-by: liaoxuezhi <liaoxuezhi@baidu.com>
2021-01-04 16:59:32 +08:00

1.4 KiB
Executable File
Raw Blame History

title description type group menuName icon order
表达式 0 💡 概念 表达式 13

一般来说,属性名类似于xxxOn的配置项,都可以使用表达式进行配置,表达式具有如下的语法:

{
  "type": "tpl",
  "tpl": "当前作用域中变量 show 是 1 的时候才可以看得到我哦~",
  "visibleOn": "this.show === 1"
}

其中:this.show === 1 就是表达式。

表达式语法

表达式语法实际上是 JavaScript 代码,更多 JavaScript 知识查看 这里

表达式中不要使用${xxx}语法,这个是数据映射的语法规则,不要搞混淆了!

在 amis 的实现过程中,当正则匹配到某个组件存在xxxOn语法的属性名时,会尝试进行下面步骤(以上面配置为例):

  1. 提取visibleOn配置项配置的 JavaScript 语句this.show === 1,并以当前组件的数据域为这段代码的数据作用域,执行这段 js 代码;
  2. 之后将执行结果赋值给visible并添加到组件属性中
  3. 执行渲染。当前示例中:visible代表着是否显示当前组件;

组件不同的配置项会有不同的效果,请大家在组件文档中多留意。

表达式的执行结果预期应该是boolean类型值如果不是amis 会根据 JavaScript 的规则将结果视作boolean类型进行判断