define('docs/advanced.md', function(require, exports, module) { module.exports = { "title": "高级用法", "shortname": "advanced", "html": "

在开始阅读之前,希望你已经阅读 快速开始文档

\n

数据作用域

配置中很多地方都可以用变量如: tpl 类型的渲染器、API 中的 Url、FormItem 中的 source 配置、visibleOn、disabledOn 以及 Form 中的 redirect 配置等等。

\n

那么都有哪些数据可以用?这取决于在哪个容器,关于容器中的数据说明如下:

\n\n

取值过程,也跟 JS 作用域中取值一样,当前作用域中有,则直接返回当前作用域中,如果没有当前作用域没有,会一直往上找,直到找到了为止。如果存在同名变量,则返回就近作用域中数据。

\n

需要注意的是,要取到值一定是在自己所在的作用域,或者上级作用域里面,同级的是取不到的,如果需要怎么办?可以往下看联动,比如:FormA 的数据发送给 formB, 另外一种方式,可以把接口拉取换到父级组件去操作,没有可拉取数据的组件,就一起包在一个 service 控件里面。

\n

联动

简单的显隐联动

主要通过 visibleOnhiddenOndisabledOn 来配置。

\n
\n

选项联动

比如 select 中 options 可能根据某个值不同而不同。

\n
\n

他们是怎么关联的呢?注意看 select 的 source 配置 "/api/mock/getOptions?waitSeconds=1&type=$foo" 这里用了变量 $foo 这个 foo 正好是第一个表单的 name 值。只要这个值发生变化,source 就会重新获取一次。

\n

这里有个问题就是,数据一旦变化就会出发重新拉取,如果是输入框岂不是拉取得很频繁?没关系,也可以主动拉取如:

\n
\n

注意,source 中的传参是通过 source 中的 data 关联的,不能写在 source 的 url 中,因为如果写了,就会自动监控值的变化而自动刷新,写在 data 里面关联则不会。如果对 source 中的配置规则不了解,请前往 API 说明

\n

另外注意 button 的 target 值,正好是这个 form 的 name 值 lidong 的 formItem 的 name 值 select。当按钮的对象是一个 formItem 时,会出发 formItem 的数据重新拉取。

\n

数据联动

Form 和 CRUD, CRUD 有个 filter 配置项,里面可以配置表单项,当他提交时 CRUD 自动就会携带接受到的表单数据然后重新获取数据。有个限制,就是 CRUD 和 filter 必须放在一起,不能分开,实际上完全可以分开,只要 Form 的 target 是 CRUD 的 name 值即可。

\n
\n

Form 的 target 还可以是另外一个 Form,当 A Form 把自己的数据提交给 B Form 时,A 的数据会被合并到 B Form 中,同时,B Form 会再次初始化,如:拉取 initApi, 重新拉取 formItem 上的 source 等等。 比如用户管理中的加入用户操作就是用这种方式实现的。

\n
\n", "toc": { "label": "目录", "type": "toc", "children": [ { "label": "数据作用域", "fragment": "%E6%95%B0%E6%8D%AE%E4%BD%9C%E7%94%A8%E5%9F%9F", "fullPath": "#%E6%95%B0%E6%8D%AE%E4%BD%9C%E7%94%A8%E5%9F%9F", "level": 2 }, { "label": "联动", "fragment": "%E8%81%94%E5%8A%A8", "fullPath": "#%E8%81%94%E5%8A%A8", "level": 2, "children": [ { "label": "简单的显隐联动", "fragment": "%E7%AE%80%E5%8D%95%E7%9A%84%E6%98%BE%E9%9A%90%E8%81%94%E5%8A%A8", "fullPath": "#%E7%AE%80%E5%8D%95%E7%9A%84%E6%98%BE%E9%9A%90%E8%81%94%E5%8A%A8", "level": 3 }, { "label": "选项联动", "fragment": "%E9%80%89%E9%A1%B9%E8%81%94%E5%8A%A8", "fullPath": "#%E9%80%89%E9%A1%B9%E8%81%94%E5%8A%A8", "level": 3 }, { "label": "数据联动", "fragment": "%E6%95%B0%E6%8D%AE%E8%81%94%E5%8A%A8", "fullPath": "#%E6%95%B0%E6%8D%AE%E8%81%94%E5%8A%A8", "level": 3 } ] } ], "level": 0 } }; });