首页 > 软件开发 > JavaScript >

Vue树形组件的示例代码

来源:互联网 2023-03-16 23:57:17 412

使用SemanticUI和vue做一个menubar组件,实现方法是这样的:Jv4办公区 - 实用经验教程分享!

Vue树形组件的示例代码Jv4办公区 - 实用经验教程分享!

方法/步骤

  • 1

    使用时,假如父组件app使用到了menubar组件,那么data中需要定义一下items数据,例 :Jv4办公区 - 实用经验教程分享!

    Vue树形组件的示例代码Jv4办公区 - 实用经验教程分享!

  • 2

    里面的click事件是定义了,当在工具栏中单击时的事件,理想的情况应该是事件定义在父组件app的events里面,像这样:Jv4办公区 - 实用经验教程分享!

    Vue树形组件的示例代码Jv4办公区 - 实用经验教程分享!

  • 3

    工具栏组件是根据传入的items来生成的,包括里面的子组件。最终工具栏组件的结构就是一个树状结构,例似这样的:Jv4办公区 - 实用经验教程分享!

    MenuBar--MenuBar----MenuBar-----MenuBar--MenubarJv4办公区 - 实用经验教程分享!

    由于每个工具栏组件里面的每个Menubar均有自己的上下文,这样当子组件Menubar的click事件触发时并不会调用到顶层app组件events里面定义的事件,而只是调用了父Menubar的events事件。Jv4办公区 - 实用经验教程分享!

    但是在使用体验上,很明显,工具栏组件的点击事件定义应该是定义在app组件的events里面的才是合理。我们希望menubar:[]定义菜单项时,不管多少级嵌套,事件的触发均可以冒泡到最上面的menubar的父上面。因此,要实现该机制,目前是采用组件之间的通讯机制来实现的:Jv4办公区 - 实用经验教程分享!

    Vue树形组件的示例代码Jv4办公区 - 实用经验教程分享!

  • 4

    上面定义一个事件@click="onMenuItemClick(item,$event)"Jv4办公区 - 实用经验教程分享!

    Vue树形组件的示例代码Jv4办公区 - 实用经验教程分享!

  • 5

    在onMenuItemClick触发时,我们根据传入的subMenu来确认点击事件如何处理,如果Menubar是作为子菜单栏处理,则我们就直接向上冒泡事件,否则就在上层父组件触发事件。Jv4办公区 - 实用经验教程分享!

    Vue树形组件的示例代码Jv4办公区 - 实用经验教程分享!

  • 6

    在menubar组件内部调用时就传入submenu=true,并且侦听事件menuItemClick,menuItemClick事件代码这样:Jv4办公区 - 实用经验教程分享!

    Vue树形组件的示例代码Jv4办公区 - 实用经验教程分享!

  • 6相关内容未经许可获取自百度经验
  • 7

    在处理嵌套结构的组件,如具有下拉菜单的工具栏、树形组件等时,由于组件内部均具有各自独立的上下文,因此必须使用组件通讯机制来处理内部组件间的通讯。Jv4办公区 - 实用经验教程分享!

    但如此处理方式,我觉得还是比较麻烦的,理想的方式,我觉得最好的官方可以为组件提供一个直接使用父组件上下文的机制,例如:Jv4办公区 - 实用经验教程分享!

    Vue树形组件的示例代码Jv4办公区 - 实用经验教程分享!

  • 8

    这样上面的button就没有自己的上下文,而可以直接引入父组件的上下文,这样模式应该在很多场合均会使用到的。Jv4办公区 - 实用经验教程分享!

  • 注意事项

    • javascript

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!Jv4办公区 - 实用经验教程分享!


    标签: JAVASCRIPT

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码