From 49b5dba003ff2b03d40630982ea637df2cfccab1 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期日, 01 十二月 2019 10:45:00 +0800
Subject: [PATCH] 优化namespace 时对vc.on 做处理

---
 java110-front/src/main/java/com/java110/front/core/VcCreateProcessor.java |   48 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 37 insertions(+), 11 deletions(-)

diff --git a/java110-front/src/main/java/com/java110/front/core/VcCreateProcessor.java b/java110-front/src/main/java/com/java110/front/core/VcCreateProcessor.java
index 17bd0dd..3f1fee2 100644
--- a/java110-front/src/main/java/com/java110/front/core/VcCreateProcessor.java
+++ b/java110-front/src/main/java/com/java110/front/core/VcCreateProcessor.java
@@ -59,7 +59,7 @@
         //灏嗙粍寤哄悕绉板啓鍏ョ粍寤篐TML 绗竴涓爣绛句腑
         addDataComponent(elements, componentName);
 
-        htmlModel.addModel(modelFactory.parse(context.getTemplateData(), doc.body().children().toString()));
+        htmlModel.addModel(modelFactory.parse(context.getTemplateData(), dealHtmlThis(tag, doc.body().children().toString())));
 
         String css = VueComponentTemplate.findTemplateByComponentCode(componentName + "." + VueComponentTemplate.COMPONENT_CSS);
         if (css != null) {
@@ -74,12 +74,43 @@
             js = dealNameSpace(js, tag);
             js = dealJsAddComponentCode(js, tag);
             js = "<script type=\"text/javascript\" " + DIV_PROPERTY_COMPONENT + "=\"" + componentName + "\">//<![CDATA[ \n" + js + "//]]>\n</script>";
-            htmlModel.add(modelFactory.createText(js));
+            htmlModel.add(modelFactory.createText(dealHtmlJs(tag, js)));
         }
 
         logger.debug("瑙f瀽瀹屾垚缁勪欢{},{}", componentName, new Date().getTime());
         structureHandler.replaceWith(htmlModel, true);
 
+    }
+
+    private String dealHtmlThis(IProcessableElementTag tag, String html) {
+
+        if (!tag.hasAttribute("namespace")) {
+            return html;
+        }
+
+        String namespace = tag.getAttributeValue("namespace");
+
+        return html.replace("this.", namespace + "_")
+                .replaceAll("(id)+( )*+=+( )*+'", "id='" + namespace + "_")
+                .replaceAll("(id)+( )*+=+( )*+\"", "id=\"" + namespace + "_");
+    }
+
+    private String dealHtmlJs(IProcessableElementTag tag, String js) {
+
+        if (!tag.hasAttribute("namespace")) {
+            return js;
+        }
+
+        String namespace = tag.getAttributeValue("namespace");
+
+        js = js.replace("this.", "vc.component." + namespace + "_")
+                .replaceAll("(\\$)+( )*+(\\()+( )*+\'+#", "\\$('#" + namespace + "_")
+                .replaceAll("(\\$)+( )*+(\\()+( )*+\"+#", "\\$(\"#" + namespace + "_");
+
+        //灏� 鐩戝惉涔熷仛浼樺寲
+        js = js.replaceAll("(vc.on)+\\('", "vc.on('" + namespace + ",");
+
+        return js;
     }
 
 
@@ -207,7 +238,7 @@
         String namespace = "";
         if (!tag.hasAttribute("namespace")) {
             namespace = DEFAULT_NAMESPACE;
-        }else {
+        } else {
             namespace = tag.getAttributeValue("namespace");
         }
 
@@ -224,15 +255,10 @@
     }
 
     public static void main(String[] args) {
-        String js = "(function (vc, vm) {vc.extends({a:'123'})})";
-        int extPos = js.indexOf("vc.extends");
-        String tmpProTypes = js.substring(extPos);
-        int pos = tmpProTypes.indexOf("{") + 1;
-        js = js.substring(0, extPos) + tmpProTypes.substring(0, pos).trim() + "\nnamespace:" + DEFAULT_NAMESPACE + ",\n" + tmpProTypes.substring(pos, tmpProTypes.length());
-        int position = js.indexOf("{");
-        String propsJs = "\n$namespace=" + DEFAULT_NAMESPACE + ";\n";
-        js = new StringBuffer(js).insert(position + 1, propsJs).toString();
+        String js = "123$ ( '#av').val()";
+        js = js.replaceAll("(\\$)+( )*+(\\()+( )*+\'+#", "\\$('#abg_");
 
         System.out.println(js);
+
     }
 }

--
Gitblit v1.8.0