您当前的位置: 首页 >  前端

java持续实践

暂无认证

  • 2浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

谷粒商城42 - 前端-商品服务-API-三级分类-删除-页面效果

java持续实践 发布时间:2020-08-07 20:31:52 ,浏览量:2

文章目录
      • 菜单的删除需求分析
      • 前端页面
      • 对显示的树进行优化
        • 只有树形的层级是一级或者二级才展示append
        • 只有没有子节点的才显示delele
        • 显示勾选框
        • 给每一行加上key

菜单的删除需求分析

需求: 没有子菜单, 并且没有被其他地方引用的菜单, 可以删除. 使用树的两种方式, 可以实现树的删除 . https://element.eleme.cn/#/zh-CN/component/tree 使用 scoped slot 更加的友好

前端页面

使用elementui的scoped slot ,复制其示例代码到catagory.vue中

并且对methods也进行复制, 在控制台中, 打印看其会传递什么参数

完整代码



  
    
    
      
      {{ node.label }}
      
         箭头函数 调用指定的方法 -->
        Append
        Delete
      
    
  



//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';

export default {
  //import引入的组件需要注入到对象中才能使用
  components: {},

  data() {
    return {
      menus: [],
      defaultProps: {
        children: "children",
        label: "name",
      },
    };
  },
  methods: {
    handleNodeClick(data) {
      console.log(data);
    },
    getMenus() {
      this.$http({
        url: this.$http.adornUrl("/product/category/list/tree"),
        method: "get",
      }).then(({ data }) => {
        console.log("成功获取到菜单数据 .... ", data.data);
        this.menus = data.data;
      });
    },
    append(data) {
      console.log("append " , data);
    },
    remove(node, data) {
      console.log("remove" , node, data);
    }
  }
};



点击某一个delete按钮, 可以看到打印的 node 和data 的数据, 可以看到 node为当前节点相关的信息. 而data为从后端数据库中获取的当前点击的节点信息. 加上 :expand-on-click-node="false" , 使其点击文字的时候,不拖放树形结构. 点击三角形的时候, 才显示或者缩放 . 同时去除其点击函数

对显示的树进行优化

使用vue的v-if 进行条件判断, 对指定条件的,才进行显示.

只有树形的层级是一级或者二级才展示append

只有没有子节点的才显示delele

显示勾选框

给每一行加上key

使用后端传递的唯一id

显示效果如下

完整的代码如下



  
    

    
      
      {{ node.label }}
      
         箭头函数 调用指定的方法 -->
        Append
        Delete
      
    
  



//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';

export default {
  //import引入的组件需要注入到对象中才能使用
  components: {},

  data() {
    return {
      menus: [],
      defaultProps: {
        children: "children",
        label: "name",
      },
    };
  },
  methods: {
    getMenus() {
      this.$http({
        url: this.$http.adornUrl("/product/category/list/tree"),
        method: "get",
      }).then(({ data }) => {
        console.log("成功获取到菜单数据 .... ", data.data);
        this.menus = data.data;
      });
    },
    append(data) {
      console.log("append ", data);
    },
    remove(node, data) {
      console.log("remove", node, data);
    },
  },
  //监听属性 类似于data概念
  computed: {},
  //监控data中的数据变化
  watch: {},
  //方法集合
  //生命周期 - 创建完成(可以访问当前this实例)  组件创建完成就发送请求
  created() {
    this.getMenus();
  },
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {},
  beforeCreate() {}, //生命周期 - 创建之前
  beforeMount() {}, //生命周期 - 挂载之前
  beforeUpdate() {}, //生命周期 - 更新之前
  updated() {}, //生命周期 - 更新之后
  beforeDestroy() {}, //生命周期 - 销毁之前
  destroyed() {}, //生命周期 - 销毁完成
  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发.  页面被激活就会发送请求
};



关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.1976s