# 动态解析
动态解析也就是平常所说的es写法或函数写法。它是监听各类数据源的变化,解析出对应的属性值。
# es写法
es语法:以es:为前缀,用特写的字符串代替($开始,如:$root)数据源,再按照一定的规则解析出来的js语句。
注意
- 除了数组es语法要遵守大括号(如:{{$root.courses[i].students[i].name}})写法,其它情况可以去掉大括号
支持es有4个数据源,这4个值共同影响整个es的解析:
rootData: 整个表单的根值/rootData;root在es语法中的写法是$rootglobal: 从表单中传入,用于外部对表单影响, 不设置则默认为空对象;global在es语法中的写法是$globalindex:数组中孩子节点(非孙子节点)项所在的索引,其它节点(非孩子)节点此值是-1;index在es语法中的写法是$indexhidden: 用于判断某一项是否隐藏的函数;hidden在es语法中的写法是$hidden("base.target"); 括号中是路径;此函数也是表单方法isHidden
# 函数写法
属性直接写成一个函数,再传入相应的参数(数据源)进行动态解析.
运用函数构造Vue属性,options所携带的信息:
global:form属性的globalrootData:表单的原始值(隐藏的项值也会取出)root:也就是rootData,为了跟$root保持一致pathKey:项组件的路径idxChain: 项组件所要数组所组成的id 如: 1,2index:项组件处于数组的子节点(非孙子)时的索引,其余的返回-1$hidden:函数。判断某项是否处于隐藏,这个函数会自动匹配所处于哪个表单,所以参数只需要传入一个pathKey。如: $hidden("base.name")
es写法完全可以用函数写法代替; 它们都有自身的优势:es写法比较简洁,特别是三目运算符中;而函数写法比较灵活,运用于比较复杂的逻辑。