element-UI 中beforeLeave用法

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

在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
    },
    ```

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: element-ui的template用于定义组件的模板,可以使用Vue的模板语法来编写组件的HTML结构和逻辑。在template可以使用element-ui提供的组件和样式,也可以自定义组件和样式。 使用template需要在组件定义template属性,并在template编写HTML结构和Vue的模板语法。例如: ``` <template> <div> <el-button @click="handleClick">点击我</el-button> </div> </template> ``` 在上面的例子,我们定义了一个简单的组件,包含一个按钮。当按钮被点击时,会触发handleClick方法。 除了使用element-ui提供的组件,我们还可以自定义组件。例如: ``` <template> <div> <my-custom-component></my-custom-component> </div> </template> <script> import MyCustomComponent from './MyCustomComponent.vue' export default { components: { MyCustomComponent } } </script> ``` 在上面的例子,我们使用了自定义的组件MyCustomComponent,并在组件引入了该组件。在template使用该组件时,只需要使用组件的标签名即可。 总之,element-ui的template用于定义组件的模板,可以使用Vue的模板语法来编写组件的HTML结构和逻辑。 ### 回答2: element-ui是一个基于Vue.js的UI库,提供了各种常用的UI组件和工具,使得Vue.js开发更加高效和简单。在element-ui,template是一种常用的模板语法,用于生成特定的UI组件和页面结构。下面将详细介绍element-uitemplate的用法。 1. 基本概念 Vue.js的template语法是一种类似HTML的结构化语言,可以用来定义Vue.js的模板。而在element-ui,template主要用于定义各种UI组件和页面结构。 2. template的语法 在element-ui,template的语法与Vue.js的template语法类似。具体来说,当开发者使用element-ui的某个UI组件时,需要在template包含对应组件的标签和属性。例如,需要使用一个button按钮,可以使用如下的template: ``` <template> <el-button type="primary">确定</el-button> </template> ``` 3. 使用slot插槽 在element-ui的某些UI组件,开发者可以使用slot插槽自定义组件的子元素。例如,在使用Dialog弹窗组件时,可以通过slot插槽添加弹窗的内容。具体用法如下: ``` <template> <el-dialog :title="title" :visible.sync="dialogVisible"> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">取 消</el-button> <el-button type="primary" @click="dialogVisible = false">确 定</el-button> </span> <p>这里是弹窗的内容</p> </el-dialog> </template> ``` 在上述代码,使用了Dialog组件,并通过slot插槽自定义了弹窗的内容和尾部按钮。 4. 使用v-if和v-for指令 在template,开发者可以使用v-if和v-for指令来控制UI组件的显示和循环列表显示。例如,使用v-for指令循环渲染一个列表: ``` <template> <el-menu theme="dark" :default-active="$route.path" class="el-menu-demo" mode="horizontal"> <el-menu-item v-for="(item, index) in list" :key="index" :index="item.path"> <router-link :to="item.path">{{ item.name }}</router-link> </el-menu-item> </el-menu> </template> <script> export default { data() { return { list: [ { name: '首页', path: '/' }, { name: '文档', path: '/docs' }, { name: '关于我们', path: '/about' }, ] } } } </script> ``` 在上述代码,使用了v-for指令循环渲染一个菜单列表。 5. 总结 在element-ui,template是一个非常重要的概念,用于定义UI组件和页面结构。开发者需要了解template的基本语法和使用方法,才能开发出更加高效和可靠的Vue.js应用程序。 ### 回答3: element-ui是一款基于vue.js的组件库,其template是element-ui非常常见的一种用法。在element-ui,template的作用主要是用于定义组件的结构和样式,可以说是组件的“皮肤”。 首先,我们需要了解一下template的基本语法。在element-ui,模板语法使用了vue.js的模板语法,比如:{{}}、v-for、v-if等。element-ui也提供了一些自定义指令和组件,比如:v-model、v-on、el-select等。 在使用element-ui的组件时,我们一般都是在template标签定义组件的结构和样式。例如,在使用el-button组件时,我们可以通过template标签传入按钮的文字、样式等信息,如下所示: <template> < el-button >登录< /el-button > </template> 在模板,我们也可以通过v-bind和v-on等指令来绑定数据和事件。例如,在使用el-select组件时,我们可以通过v-bind指令来动态绑定选项列表,如下所示: <template> < el-select v-model="selectOption" v-bind:options="options" placeholder="请选择"></el-select > </template> 在这个例子,我们使用了v-model指令来实现双向绑定,同时使用了v-bind指令来动态绑定选项列表。 总之,template是element-ui非常重要的一种语法,在开发经常会用到。理解template的使用方法和基本语法,能够更好地开发出漂亮、易用的界面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值