详解Vue2 无限级分类(添加,删除,修改)

发布时间 - 2026-01-11 00:03:01    点击率:

本人对vue不是很懂,搜索了很多关于Vue2 无限级分类介绍,下面我来记录一下,有需要了解Vue2 无限级分类的朋友可参考。希望此文章对各位有所帮助。

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Vue 树</title>
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 <style type="text/css">
 a{color: #333; text-decoration: none;}
 ul{padding-left: 15px;}
 </style>
</head>
<body>
 <div id="app">
  {{items}}
  <treelist v-for="(val, index) in items" :item="val" @remove="delItem(index)"></treelist>
 </div>
 <template id="treelist-template">
  <ul>
   <div style="padding:5px 0;">
    <a v-if="isFolder" @click="toggle()">[{{open ? '-' : '+'}}]</a>
    <a v-else style="color:#FFF;">[+]</a>
    <input type="number" style="width:80px;" v-model="item.sort">
    <input type="text" size="30" v-model="item.name" placeholder="岗位名称">
    <button type="button" @click="addChild()">添加</button>
    <button type="button" @click="$emit('remove')" v-if="!isFolder">删除</button>
   </div>
   <ul v-show="open" v-if="isFolder">
    <treelist v-for="(val, index) in item.children" :item="val" @remove="delItem(index)"></treelist>
   </ul>
  </ul>
 </template>
<script>
window.onload = function(){
 //treelist组件
 Vue.component('treelist', {
  template: '#treelist-template',
  props: {
   item: Object
  },
  data: function() {
   return {
    open: false
   }
  },

  computed: {
   isFolder: function() {
    return this.item.children && this.item.children.length
   }
  },

  methods: {
   toggle: function() {
    if (this.isFolder) {
     this.open = !this.open
    }
   },
   
   addChild: function() {
    /*添加内容但不同步到服务器*/
    if (!this.isFolder) {
       Vue.set(this.item, 'children', [])
     }
    this.open = true
    this.item.children.push({
     sort: 0,
     name: '',
     status: 1,
     parent_id: this.item['id']
    })
   },
   delItem: function(index){
     this.item['children'].splice(index, 1)
   }
  }
 })

 new Vue({
  el: '#app',
  data:{
   mydata: {},
   items: [
     {"id":"10","parent_id":"0","sort":"0","name":"其它","status":"0"},
     {"id":"12","parent_id":"0","sort":"0","name":"测试","status":"0"},
     {"id":"1","parent_id":"0","sort":"0","name":"水果","status":"0",
       "children":[
         {"id":"4","parent_id":"1","sort":"0","name":"香蕉","status":"0"}
       ]
     },
     {"id":"2","parent_id":"0","sort":"0","name":"饮料","status":"0",
       "children":[
         {"id":"5","parent_id":"2","sort":"0","name":"可乐","status":"0"},
         {"id":"6","parent_id":"2","sort":"0","name":"酒水","status":"0",
           "children":[
             {"id":"7","parent_id":"6","sort":"0","name":"啤酒","status":"0"}
           ]
         }
       ]
     },
     {"id":"3","parent_id":"0","sort":"0","name":"美食","status":"0",
       "children":[
         {"id":"8","parent_id":"3","sort":"0","name":"红烧鱼","status":"0"}
       ]
     }
   ]
  },

  methods: {
   add:function(){
    this.mydata['id'] = 100;//从服务器返回的ID号
    this.mydata['status'] = 0;
    this.mydata['parent_id'] = 0;
    this.items.push(this.mydata);
    this.mydata = {};
   },

   delItem: function(index){
     this.items.splice(index, 1)
   }
  }
 });
}

</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# vue.js  # 无限级分类  # Vue无限级分类  # 详解vue添加删除元素的方法  # vue.js实现点击后动态添加class及删除同级class的实现代码  # 在Vue组件上动态添加和删除属性方法  # 使用Bootstrap + Vue.js实现添加删除数据示例  # Vue.js动态添加、删除选题的实例代码  # vue实现学生录入系统之添加删除功能  # 我来  # 不是很  # 人对  # 但不  # 大家多多  # 红烧鱼  # color  # css  # ul  # decoration  # dist  # unpkg  # https  # text  # type  # style  # padding  # items  # app  # treelist 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信小程序 canvas开发实例及注意事项  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  java中使用zxing批量生成二维码立牌  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何自定义建站之星模板颜色并下载新样式?  南京网站制作费用,南京远驱官方网站?  如何为不同团队 ID 动态生成多个独立按钮  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  C++时间戳转换成日期时间的步骤和示例代码  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何在Windows环境下新建FTP站点并设置权限?  如何在企业微信快速生成手机电脑官网?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  zabbix利用python脚本发送报警邮件的方法  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  如何用PHP工具快速搭建高效网站?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  JavaScript如何实现继承_有哪些常用方法  北京专业网站制作设计师招聘,北京白云观官方网站?  如何在腾讯云服务器上快速搭建个人网站?  详解阿里云nginx服务器多站点的配置  Android自定义控件实现温度旋转按钮效果  晋江文学城电脑版官网 晋江文学城网页版直接进入  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  如何快速搭建自助建站会员专属系统?  使用C语言编写圣诞表白程序  Laravel安装步骤详细教程_Laravel环境搭建指南  nodejs redis 发布订阅机制封装实现方法及实例代码  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  轻松掌握MySQL函数中的last_insert_id()  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  Laravel如何保护应用免受CSRF攻击?(原理和示例)  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  怎么用AI帮你设计一套个性化的手机App图标?  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  如何快速搭建高效简练网站?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Android 常见的图片加载框架详细介绍  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  如何选择PHP开源工具快速搭建网站?  Laravel如何实现一对一模型关联?(Eloquent示例)  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  魔方云NAT建站如何实现端口转发?  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理