element UI排坑记(一):判断tabs组件是否切换

之所以将这个问题列在排坑记之中,是因为官方组件的一个属性颇有些隐蔽,这个问题曾经折腾了本人较多时间,始终思维固着,且使用搜索引擎也不容易搜索到答案,故记之。然而实际解决却是相当简单的。

一、问题描述

在element UI的tabs组件中,假设需要在tab切换时执行某个函数,有什么方案?

二、问题举例

有两个tab,tab1和tab2,两个tab都有一个el-select组件,分别是el-select1和el-select2。el-select1和el-select2绑定了同一个字段,但是两者的下拉选项不相同。在切换tab时将导致以下问题:

1. 显示tab1中内容时,a的值是el-select1中某一下拉选项的值,但这个值在el-select2中不存在;反过来切换也是一样。
2. 这将使得切换tab时,el-select1或者el-select2中出现错误的下拉选项。

三、常用误区:通过事件解决

最容易想到的是采用tab-clik事件,但它的两个回调参数无法获取到切换前的tab实例,因此无法判断是否发生了tab切换。

四、解决方案:

采用before-leave钩子,它是el-tabs的一个一个属性,注意是属性而不是事件。给该属性绑定一个函数,则在触发tab切换时将执行绑定的函数。该钩子将在tab-clik之前执行。

它和tab-click的区别可总结如下:
1. tab-click在点击tab时就会触发,不论是否切换tab。
2. before-leave只在tab切换时触发。
3. 两者都触发时,before-leave先触发。

五、代码案例

      <el-tabs :before-leave='leaveTab'>
        <el-tab-pane label="主合同" name="False"></el-tab-pane>
        <el-tab-pane label="子合同" name="True"></el-tab-pane>
      </el-tabs>
      
    leaveTab(activeName, oldActiveName) {
    // do something
    },
    ```
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Element UI Tabs 动态组件是指在 Element UI Tabs 组件中,可以动态地添加、删除、修改子组件。这样可以让用户在使用时更加灵活方便,可以根据需要动态地调整界面布局和内容。例如,在一个 Tab 中可以添加一个表格组件,另一个 Tab 中可以添加一个表单组件,用户可以根据需要切换不同的 Tab 来查看不同的内容。在 Element UI 中,可以通过 v-for 指令和动态组件来实现 Tabs 动态组件的功能。 ### 回答2: Element UI是一个基于Vue.js 2.0的UI框架,提供了众多的UI组件tabs是其中的一种。tabs是一种用于切换内部内容的容器,可以在其中放置多个tab。通常,tab的标题会被放置在tabs的顶部,并且标题会随着用户的点击而发生变化,显示不同的内容。 Element UItabs组件提供了动态组件的功能来实现更复杂的前端需求。动态组件是指在运行时根据组件的数据来动态创建和销毁其他组件的技术。 动态组件通常是由一个父组件控制。父组件负责获取数据并通过props传递给子组件,由子组件创建新的子组件实例。在Element UItabs中,动态组件可以用来实现以下功能: 1. 延迟加载:在tabs中显示的每个标签页都可以由一个独立的组件来实现,因此可以使用动态组件来实现延迟加载。这种方式可以有效地减少初始加载时间和网络请求,提高用户体验。 2. 动态添加和删除:Element UItabs组件支持动态添加和删除标签页,这意味着我们可以在运行时根据用户的操作来添加或删除标签页。为了实现这个功能,我们可以使用动态组件来根据用户的选择动态创建或销毁标签页。 3. 多级嵌套:对于一些更复杂的场景,可能需要在标签页中嵌套其他组件。这时,可以使用动态组件来创建多级嵌套的组件结构。 总之,Element UItabs组件的动态组件功能可以让我们更加灵活地根据需求来创建动态的组件结构,提高前端开发效率。 ### 回答3: Element UI 是一款基于 Vue.js 的 UI 组件库,提供了丰富的组件来帮助开发者快速构建前端界面。其中,tabs 组件是用来创建多窗口面板的,可以将不同的内容放在不同的标签面板中。 而动态组件是指可以由外部事件或数据触发而实现动态加载内容的组件。结合 Element UItabs 组件,我们可以实现动态加载不同的标签面板内容。 首先,在 tabs 组件的基础上,我们需要为每一个标签面板设置一个 name 属性,用于后续动态加载该面板内容。然后,我们可以通过 v-for 循环来创建多个标签面板。 其次,我们需要创建一个对象数组,存储每个标签面板对应的组件名称及组件所传递的参数。在父组件中使用 v-bind 动态绑定 props 将参数传递给子组件,并通过 is 属性绑定组件名称实现动态加载组件。 最后,我们可以通过元素的点击事件等方式动态修改对象数组中的内容,从而实现动态加载不同的标签面板内容。 综上所述,Element UItabs 动态组件功能提供了更加灵活的标签面板内容管理方式,可以根据实际需求动态加载不同的标签内容,实现更加丰富多样的前端页面交互效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值