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


Posted in Javascript onMarch 07, 2017

本人对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>

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

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

Javascript 相关文章推荐
javascript delete 使用示例代码
Mar 29 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
Feb 01 Javascript
jQuery实现商品活动倒计时
Oct 16 Javascript
js右下角弹出提示框示例代码
Jan 12 Javascript
深入浅析JavaScript面向对象和原型函数
Feb 06 Javascript
JavaScript中数据类型转换总结
Dec 25 Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 Javascript
js实现字符全排列算法的简单方法
May 01 Javascript
vue 中自定义指令改变data中的值
Jun 02 Javascript
jquery easyui如何实现格式化列
Jul 30 jQuery
Vue中的循环及修改差值表达式的方法
Aug 29 Javascript
react 不用插件实现数字滚动的效果示例
Apr 14 Javascript
js放到head中失效的原因与解决方法
Mar 07 #Javascript
Bootstrap媒体对象学习使用
Mar 07 #Javascript
angular十大常见问题
Mar 07 #Javascript
Bootstrap表单控件学习使用
Mar 07 #Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
Mar 07 #Javascript
Bootstrap进度条实现代码解析
Mar 07 #Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
Mar 07 #Javascript
You might like
php实现利用phpexcel导出数据
2013/08/24 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
ES6学习教程之对象的扩展详解
2017/05/02 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
Python中生成器和yield语句的用法详解
2015/04/17 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
Python魔法方法功能与用法简介
2019/04/04 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
Python pip使用超时问题解决方案
2020/08/03 Python
Python使用xpath实现图片爬取
2020/09/16 Python
Python基于template实现字符串替换
2020/11/27 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
numba提升python运行速度的实例方法
2021/01/25 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
写自荐信要注意什么
2013/12/26 职场文书
计算机相关的自我评价
2014/01/15 职场文书
爱牙日活动总结
2014/08/29 职场文书
2014年个人年终总结
2015/03/09 职场文书
团员自我评价范文
2015/03/10 职场文书
2015年售票员工作总结
2015/04/29 职场文书
教师节校长致辞
2015/07/31 职场文书
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android