浏览代码

system.flatRow

luoyifan 3 年之前
父节点
当前提交
a49959018a
共有 1 个文件被更改,包括 32 次插入1 次删除
  1. 32 1
      src/lib/systemLib.ts

+ 32 - 1
src/lib/systemLib.ts

@@ -111,12 +111,43 @@ export function calcObjectFlat(data, paramObject) {
  * 合併 data 到當前的 ViewModel 對象
  */
 export function mergeViewModel(viewModel, propertyName, data) {
-    _.forOwn(data, (value, key) => {
+    _.forOwn(flatRow(data), (value, key) => {
         viewModel.set(propertyName + "." + key, value)
     })
 }
 
 /**
+ * 转换内联结构的行,到平面结构
+ * company: { name:'公司1', id:'编号1' } => { company_id:'编号1', company_name:'公司1' }
+ *
+ * @param array
+ * @param flatOption
+ * @return {[]}
+ */
+export function flatRow(array) {
+    const ret = []
+
+    _.forEach(array, row => {
+        const newRow = {}
+        flatObject(newRow, '', row)
+        ret.push(newRow)
+    })
+
+    return ret
+}
+
+function flatObject(parentObj, parentProp, obj) {
+    _.forOwn(obj, (value, key) => {
+        const fullKey = parentProp ? parentProp + '_' + key : key
+        if (typeof value === 'object') {
+            flatObject(parentObj, fullKey, value)
+        } else {
+            parentObj[fullKey] = value
+        }
+    })
+}
+
+/**
  * 根据表达式进入写值
  * express="{query.a}"   写值就是 viewModel.set('query.a', value)
  * express="test-{query.a}"   写值就会失败