详解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 相关文章推荐
jQuery中:last-child选择器用法实例
Dec 31 Javascript
浅谈js 闭包引起的内存泄露问题
Jun 22 Javascript
jQuery实现HTML表格单元格的合并功能
Apr 06 Javascript
javascript的理解及经典案例分析
May 20 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
May 21 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
Apr 04 jQuery
简单的vuex 的使用案例笔记
Apr 13 Javascript
解决vue数组中对象属性变化页面不渲染问题
Aug 09 Javascript
vue组件之间通信实例总结(点赞功能)
Dec 05 Javascript
vue集成chart.js的实现方法
Aug 20 Javascript
JS使用正则表达式判断输入框失去焦点事件
Oct 16 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令牌 Token改进版
2008/07/18 PHP
php中的三元运算符使用说明
2011/07/03 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
cakephp常见知识点汇总
2017/02/24 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
详解Matlab中 sort 函数用法
2016/03/20 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
Python中super函数的用法
2017/11/17 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
团工委书记自荐书范文
2013/12/17 职场文书
小学教师师德感言
2014/02/10 职场文书
社区工作者演讲稿
2014/05/23 职场文书
员工试用期自我评价
2014/09/18 职场文书
股东授权委托书
2014/10/15 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏