{"id":8331,"date":"2020-12-18T14:08:05","date_gmt":"2020-12-18T06:08:05","guid":{"rendered":"https:\/\/sdeno.com\/?p=8331"},"modified":"2022-05-05T15:50:40","modified_gmt":"2022-05-05T07:50:40","slug":"vue%e6%a0%91%e8%8a%82%e7%82%b9%e5%88%9b%e5%bb%ba%e4%bb%a5%e5%8f%8a%e5%a2%9e%e5%88%a0%e6%94%b9","status":"publish","type":"post","link":"https:\/\/sdeno.com\/?p=8331","title":{"rendered":"vue\u6811\u8282\u70b9\u521b\u5efa\u4ee5\u53ca\u589e\u5220\u6539"},"content":{"rendered":"<p>\u6548\u679c\u56fe\uff1a<\/p>\n<figure class=\"mdx-lazyload-container\" style=\"max-width:1024px\"><div style=\"padding-top:63.37890625%\"><\/div><div class=\"mdx-img-loading-sp mdui-valign\"><div><div class=\"mdui-spinner\"><\/div><\/div><\/div><img width=\"1024\" height=\"649\" class=\"alignnone size-large wp-image-8332 lazyload\" title=\"vue\u6811\u8282\u70b9\u521b\u5efa\u4ee5\u53ca\u589e\u5220\u6539\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/sdeno.com\/wp-content\/uploads\/2020\/12\/20201218113117-1024x649.png\" alt=\"https:\/\/sdeno.com\/wp-content\/uploads\/2020\/12\/20201218113117-1024x649.png\" data-srcset=\"https:\/\/sdeno.com\/wp-content\/uploads\/2020\/12\/20201218113117.png 1024w, https:\/\/sdeno.com\/wp-content\/uploads\/2020\/12\/20201218113117-300x190.png 300w, https:\/\/sdeno.com\/wp-content\/uploads\/2020\/12\/20201218113117-768x487.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/figure>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/sdeno.com\/wp-content\/uploads\/2020\/12\/tree.html\" target=\"_blank\" rel=\"noopener\">demo\u67e5\u770b<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\u5982\u679c\u4f7f\u7528\u811a\u624b\u67b6\u9879\u76ee\u4f7f\u7528\u53ef\u80fd\u4f1a\u62a5\u9519<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">[Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u4f7f\u7528runtimeonly\u6a21\u5f0f\u7684\uff0c\u4e5f\u5c31\u662f\u5f15\u5165.vue<\/p>\n<p>\u5982\u679c\u4e0d\u662f\u76f4\u63a5\u5f15\u5165vue.js\u800c\u662f\u4f7f\u7528\u811a\u624b\u67b6\uff0c\u4f60\u53ef\u80fd\u4f1a\u542f\u52a8<\/p>\n<pre>module.exports = {\r\n  runtimeCompiler: true\r\n}<\/pre>\n<p>\u90a3\u5c31\u9700\u8981\u4e86\u89e3Compiler\u548cRuntime\u7684\u533a\u522b<\/p>\n<p>\u603b\u4e4b\uff0cCompiler\u6a21\u5f0f\u652f\u6301\u7f16\u8bd1template\uff0c\u6162\uff1b<\/p>\n<p>\u4f8b\u5982\uff1a<\/p>\n<pre>new Vue({\r\n el: \"#box\",\r\n template: \"&lt;div&gt;{{msg}}&lt;\/div&gt;\",\r\n data: {\r\n  msg: \"hello\"\r\n }\r\n});<\/pre>\n<p>Runtime\u4f7f\u7528 vue-loader \u52a0\u8f7d.vue \u6587\u4ef6\uff0c\u4e0d\u652f\u6301\u76f4\u63a5\u7528template\uff0c\u8fd9\u79cd\u65b9\u5f0f\u5feb\u3002<\/p>\n<p><a href=\"https:\/\/blog.csdn.net\/xiaomajia029\/article\/details\/88320233\" target=\"_blank\" rel=\"noopener\">https:\/\/blog.csdn.net\/xiaomajia029\/article\/details\/88320233<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u7236\uff1a<\/p>\n<pre>&lt;template&gt;\r\n  &lt;div class=\"app-container\"&gt;\r\n\r\n          &lt;el-col :span=\"12\"&gt;\r\n                &lt;el-input v-model=\"firstlevel\" style=\"width: 150px;\"&gt;&lt;\/el-input&gt;\r\n                &lt;el-button @click=\"addfirstlevel\" type=\"primary\"&gt;\u5b8c\u6210&lt;\/el-button&gt;\r\n          &lt;\/el-col&gt;\r\n          &lt;el-col :span=\"12\"&gt;\r\n                &lt;treeMenus :toplevel=\"toplevel\" :list=\"treeMenusData\"&gt;&lt;\/treeMenus&gt;\r\n                &lt;el-button @click=\"savetree\" type=\"primary\"&gt;\u5b8c\u6210&lt;\/el-button&gt;\r\n          &lt;\/el-col&gt;\r\n      \r\n  &lt;\/div&gt;\r\n&lt;\/template&gt;\r\n\r\n&lt;script&gt;\r\n\r\nimport $ from 'jquery'\r\n\r\nimport TreeMenus from '@\/components\/TreeMenus'\r\nvar tempid=0;\r\nexport default {\r\n  name: 'categoryManagement',\r\n  components: {\r\n    TreeMenus\r\n  },\r\n  data() {\r\n    return {\r\n      toplevel:1,\r\n\r\n      firstlevel:'',\r\n  \r\n      treeMenusData: [ \/\/ \u6570\u636e\u683c\u5f0f\r\n        \/\/ {\r\n        \/\/   id:1,\r\n        \/\/   name:'\u4e00\u7ea71',\r\n        \/\/   children:[\r\n        \/\/     {\r\n        \/\/       id:8,\r\n        \/\/       name:'\u4e8c\u7ea7-1',\r\n        \/\/       children:[\r\n        \/\/         {\r\n        \/\/           id:3,\r\n        \/\/           name:'\u4e09\u7ea7-1',\r\n        \/\/           children:[\r\n        \/\/             {\r\n        \/\/               id:11,\r\n        \/\/               name:'\u56db\u7ea7-1',\r\n        \/\/               children:[\r\n        \/\/\r\n        \/\/               ]\r\n        \/\/             },\r\n        \/\/           ]\r\n        \/\/         },\r\n        \/\/       ]\r\n        \/\/     },\r\n        \/\/     {\r\n        \/\/       id:77,\r\n        \/\/       name:'\u4e8c\u7ea7-2',\r\n        \/\/       children:[\r\n        \/\/\r\n        \/\/       ]\r\n        \/\/     }\r\n        \/\/   ]\r\n        \/\/ },\r\n        \/\/ {\r\n        \/\/   id:61,\r\n        \/\/   name:'\u4e00\u7ea72',\r\n        \/\/   children:[]\r\n        \/\/ },\r\n      ],\r\n\r\n    }\r\n  },\r\n  watch: {\r\n\r\n  },\r\n  created() {\r\n\r\n  },\r\n  mounted() {\r\n    \r\n  },\r\n  destroyed() {\r\n    \/\/ window.removeEventListener('storage', this.afterQRScan)\r\n  },\r\n  methods: {\r\n\r\n\r\n    findx:function(type,arr,id){\r\n      for(let i=0;i&lt;arr.length;i++){\r\n\r\n        if( arr[i].id==id ){\r\n          if(type=='del'){\r\n            arr.splice(i,1)\r\n          }else{\r\n            arr[i].children.push({\r\n              id:this.findmaxValue(this.list)+1,\r\n              name:'',\r\n              children:[]\r\n            })\r\n          }\r\n          break\r\n        }else if(arr[i].children.length &gt; 0){\r\n          this.findx(type,arr[i].children, id);  \/\/\u9012\u5f52\u8c03\u7528\r\n        }\r\n      }\r\n    },\r\n\r\n\r\n    findmaxValue(arr){\r\n\r\n      for(let i=0;i&lt;arr.length;i++){\r\n        console.log(arr[i].id)\r\n        if(arr[i].id&gt;tempid){\r\n          tempid=arr[i].id\r\n        }\r\n\r\n        if(arr[i].children.length &gt; 0){\r\n          this.findmaxValue(arr[i].children);  \/\/\u9012\u5f52\u8c03\u7528\r\n        }else{\r\n         \/\/ break\r\n        }\r\n\r\n      }\r\n      return tempid\r\n    },\r\n\r\n\r\n    \/\/\u6dfb\u52a0\u7b2c\u4e00\u7ea7\r\n    addfirstlevel(){\r\n      tempid =0\r\n\r\n      this.treeMenusData.push({\r\n        id:this.findmaxValue(this.treeMenusData)+1,\r\n        name:this.firstlevel,\r\n        children:[\r\n        ]\r\n      })\r\n\r\n    },\r\n\r\n \r\n\r\n    savetree(){\r\n\r\n      console.log(this.treeMenusData)\r\n\r\n    }\r\n\r\n  }\r\n}\r\n&lt;\/script&gt;\r\n\r\n&lt;style lang=\"scss\"&gt;\r\n  .el-pagination{display: inline-block}\r\n  .treedom span{background: #ccc;cursor: pointer}\r\n  li{list-style: none}\r\n  em{cursor: pointer}\r\n  .catename{padding: 10px 0;}\r\n  .branch{display: none}\r\n  #tree em{margin-right: 5px;}\r\n  #tree li{margin: 15px 0}\r\n  #tree .del{cursor: pointer;font-size: 12px; color: rgb(64, 158, 255);}\r\n  #tree input{\r\n    height: 36px;\r\n    line-height: 36px;\r\n    -webkit-appearance: none;\r\n    background-color: #FFFFFF;\r\n    background-image: none;\r\n    border-radius: 4px;\r\n    border: 1px solid #DCDFE6;\r\n    -webkit-box-sizing: border-box;\r\n    box-sizing: border-box;\r\n    color: #606266;\r\n    display: inline-block;\r\n    font-size: inherit;\r\n    outline: none;\r\n    padding: 0 15px;\r\n    -webkit-transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\r\n    transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\r\n  }\r\n\r\n&lt;\/style&gt;\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\u5b50\uff1a<\/p>\n<pre>&lt;template&gt;\r\n     &lt;ul class=\"tree-ul\"&gt;\r\n       &lt;li v-for=\"(item,index) in list \" :key=\"index\"&gt;\r\n         &lt;div&gt; &lt;span v-if=\"toplevel!=4\" @click=\"addlevelbtn(item.id)\"&gt;&lt;i class=\"el-icon-circle-plus\"&gt;&lt;\/i&gt;&lt;\/span&gt; &lt;el-input style=\"width: 150px\" v-model=\"item.name\"&gt;&lt;\/el-input&gt; &lt;el-link @click=\"delfindid(item.id)\" type=\"primary\"&gt;\u5220\u9664&lt;\/el-link&gt; &lt;\/div&gt;\r\n         &lt;treeMenus :toplevel=\"toplevel+1\" :list=\"item.children\"&gt;&lt;\/treeMenus&gt;\r\n       &lt;\/li&gt;\r\n     &lt;\/ul&gt;\r\n\r\n&lt;\/template&gt;\r\n&lt;script&gt;\r\n\r\nvar tempid=0\r\nexport default {\r\n  name: \"treeMenus\",\r\n  props: {\r\n    list: Array,\r\n    toplevel:Number,\r\n  },\r\n  data(){\r\n    return{\r\n\r\n    }\r\n  },\r\n  computed:{\r\n\r\n  },\r\n  methods:{\r\n    addlevelbtn(id){\r\n      tempid=0\r\n      this.findx('xx',this.list,id)\r\n    },\r\n\r\n\r\n    findmaxValue(arr){\r\n\r\n      for(let i=0;i&lt;arr.length;i++){\r\n        console.log(arr[i].id)\r\n        if(arr[i].id&gt;tempid){\r\n          tempid=arr[i].id\r\n        }\r\n\r\n        if(arr[i].children.length &gt; 0){\r\n          this.findmaxValue(arr[i].children);  \/\/\u9012\u5f52\u8c03\u7528\r\n        }else{\r\n          \/\/ break\r\n        }\r\n\r\n      }\r\n      return tempid\r\n    },\r\n\r\n    findx:function(type,arr,id){\r\n      for(let i=0;i&lt;arr.length;i++){\r\n\r\n        if( arr[i].id==id ){\r\n          if(type=='del'){\r\n            arr.splice(i,1)\r\n          }else{\r\n            arr[i].children.push({\r\n              id:this.findmaxValue(this.list)+1,\r\n              name:'',\r\n              children:[]\r\n            })\r\n          }\r\n          break\r\n        }else if(arr[i].children.length &gt; 0){\r\n          this.findx(type,arr[i].children, id);  \/\/\u9012\u5f52\u8c03\u7528\r\n        }\r\n      }\r\n    },\r\n\r\n    delfindid:function(id){\r\n        this.findx('del',this.list,id)\r\n    }\r\n\r\n  }\r\n};\r\n\r\n&lt;\/script&gt;\r\n&lt;style&gt;\r\n.tree-ul li{margin: 10px 0;}\r\n&lt;\/style&gt;<\/pre>\n<p>\u5173\u4e8evue\u7ec4\u4ef6\u9012\u5f52\u7b80\u5355\u6848\u4f8b\uff1a<a href=\"https:\/\/www.cnblogs.com\/gsgs\/p\/6687030.html\" target=\"_blank\" rel=\"noopener\">https:\/\/www.cnblogs.com\/gsgs\/p\/6687030.html<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6548\u679c\u56fe\uff1a &nbsp; demo\u67e5\u770b &nbsp; \u5982\u679c\u4f7f\u7528\u811a\u624b\u67b6\u9879\u76ee\u4f7f\u7528\u53ef\u80fd\u4f1a\u62a5\u9519 [Vue warn]:  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-8331","post","type-post","status-publish","format-standard","hentry","category-11"],"_links":{"self":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts\/8331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8331"}],"version-history":[{"count":0,"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts\/8331\/revisions"}],"wp:attachment":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}