From 2b759ab5e5d708c4c9a6b4a093103c026667cf38 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期一, 06 五月 2019 11:33:59 +0800
Subject: [PATCH] 对组件传参重新封装

---
 WebService/src/main/java/com/java110/web/core/VueComponentElement.java |   40 +++++++++++++++++++++++++++++++---------
 1 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/WebService/src/main/java/com/java110/web/core/VueComponentElement.java b/WebService/src/main/java/com/java110/web/core/VueComponentElement.java
index 7c9329c..53b4a00 100644
--- a/WebService/src/main/java/com/java110/web/core/VueComponentElement.java
+++ b/WebService/src/main/java/com/java110/web/core/VueComponentElement.java
@@ -1,6 +1,5 @@
 package com.java110.web.core;
 
-import com.java110.common.util.Assert;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -9,14 +8,13 @@
 import org.thymeleaf.dom.Element;
 import org.thymeleaf.dom.Macro;
 import org.thymeleaf.dom.Node;
+import org.thymeleaf.exceptions.TemplateProcessingException;
 import org.thymeleaf.processor.element.AbstractMarkupSubstitutionElementProcessor;
 import org.thymeleaf.util.DOMUtils;
 
 import java.io.StringReader;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * 缁勪欢 鑷畾涔夋爣绛惧姛鑳界被
@@ -69,6 +67,7 @@
         if (js != null) {
 
             js = dealJs(js, element);
+            js = dealJsAddComponentCode(js, element);
             js = "<script type=\"text/javascript\">//<![CDATA[ \n" + js + "//]]>\n</script>";
             Node nodeJs = new Macro(js);
             nodes.add(nodeJs);
@@ -101,18 +100,35 @@
         }
 
         String[] tmpType = tmpProTypes.split(",");
+        StringBuffer propsJs = new StringBuffer("\nvar $props = {};\n");
         for (String type : tmpType) {
             if (StringUtils.isEmpty(type) || !type.contains(":")) {
                 continue;
             }
             String[] types = type.split(":");
-            if (!element.hasAttribute(types[0].trim())) {
-                throw new RuntimeException("鏈厤缃粍浠跺睘鎬�" + types[0]);
+            String attrKey = types[0].replace(" ", "")
+                    .replace("\n", "")
+                    .replace("\r", "");
+            if (!element.hasAttribute(attrKey)) {
+                String componentName = element.getAttributeValue("name");
+                logger.error("缁勪欢" + componentName + "鏈厤缃粍浠跺睘鎬� " + attrKey);
+                throw new TemplateProcessingException("缁勪欢[" + componentName + "]鏈厤缃粍浠跺睘鎬�" + attrKey);
             }
-            String vcType = element.getAttributeValue(types[0]);
-            js = js.replace(types[0], vcType);
-
+            String vcType = element.getAttributeValue(attrKey);
+            if (types[1].equals("vc.propTypes.string")) {
+                vcType = "'" + vcType + "'";
+            }
+            propsJs.append("$props." + attrKey + "=" + vcType + ";\n");
         }
+
+        //灏唒ropsJs 鎻掑叆鍒� 绗竴涓� { 涔嬪悗
+        int position = js.indexOf("{");
+        if (position < 0) {
+            String componentName = element.getAttributeValue("name");
+            logger.error("缁勪欢" + componentName + "瀵瑰簲js 鏈寘鍚� {}  ");
+            throw new TemplateProcessingException("缁勪欢" + componentName + "瀵瑰簲js 鏈寘鍚� {}  ");
+        }
+        js = new StringBuffer(js).insert(position + 1, propsJs).toString();
         return js;
     }
 
@@ -125,7 +141,13 @@
      */
     private String dealJsAddComponentCode(String js, Element element) {
 
-        return "";
+        if (!element.hasAttribute("code")) {
+            return js;
+        }
+
+        String code = element.getAttributeValue("code");
+
+        return js.replace("@vc_", code);
     }
 
     /**

--
Gitblit v1.8.0