# 动态解析

动态解析也就是平常所说的es写法函数写法。它是监听各类数据源的变化,解析出对应的属性值。

# es写法

es语法:以es:为前缀,用特写的字符串代替($开始,如:$root数据源,再按照一定的规则解析出来的js语句。

注意

  • 1.7.0及以上的版本,除了数组es语法要遵守大括号(如:{{$root.courses[i].students[i].name}})写法,其它情况可以去掉大括号;
  • 1.7.0以下版本的数据源还是要遵守大括号(如:{{$root}})写法。

支持es有4个数据源,这4个值共同影响整个es的解析:

  • rootData: 整个表单的根值/rootData;root在es语法中的写法是$root
  • global: 从表单中传入,用于外部对表单影响, 不设置则默认为空对象;global在es语法中的写法是$global
  • index:数组中孩子节点(非孙子节点)项所在的索引,其它节点(非孩子)节点此值是-1;index在es语法中的写法是$index
  • hidden: 用于判断某一项是否隐藏的函数;hidden在es语法中的写法是$hidden("base.target"); 括号中是路径;此函数也是表单方法isHidden

数组es写法

# 函数写法

属性直接写成一个函数,再传入相应的参数(数据源)进行动态解析.

运用函数构造Vue属性,options所携带的信息:

  • global:form属性的global
  • rootData:表单的原始值(隐藏的项值也会取出)
  • root1.7.0:也就是rootData,为了跟$root保持一致
  • pathKey:项组件的路径
  • idxChain: 项组件所要数组所组成的id 如: 1,2
  • index:项组件处于数组的子节点(非孙子)时的索引,其余的返回-1
  • $hidden:函数。判断某项是否处于隐藏,这个函数会自动匹配所处于哪个表单,所以参数只需要传入一个pathKey。如: $hidden("base.name")

es写法完全可以用函数写法代替; 它们都有自身的优势:es写法比较简洁,特别是三目运算符中;而函数写法比较灵活,运用于比较复杂的逻辑。