vue点击tab时调用接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue点击tab时调用接口相关的知识,希望对你有一定的参考价值。

2.多个tabs标签页请求多个接口
需求描述:

有三个可切换的tabs页签,红色的两个框里的tabs页签请求的是同一个接口,但是两个页签传递的参数值不一样,橙色的框里请求的是另一个接口。通过点击不同的tabs页签去跳转页面并请求不同的接口返回的数据。默认显示最新知识页签的数据。

html页面:

最新知识和热门知识调的是同一个接口,排行榜是一个接口。

接口:

最新知识和热门知识的接口给后端传的参数rankingType(直接传汉字 ):"最新知识" or "热门知识"。排行榜的接口给后端传的参数rankingListType :"下载排行"。

实现:

在api文件里新建相关文件存储接口代码

【get请求用拼接】【get请求传参用param、post请求传参用data】

/**
* 最新知识、热门知识
*/
export function knowledgeListDetail(param)
return request(
url: '/api/knowledge/ranking/listDetail?' + 'rankingType=' + param.rankingType,
headers:
isToken: true,
'Access-Control-Allow-Origin':'*',
,
method: 'get',
)


/**
* 排行榜
*/
export function rankingListDetail(param)
return request(
url: '/api/knowledge/rankingList/listDetail?' + 'rankingListType=' + param.rankingListType,
headers:
isToken: true,
'Access-Control-Allow-Origin':'*',
,
method: 'get',
)

登录后复制

在html引入element组件里tabs页签的代码,根据具体需求更改代码。

<template>
<!-- 最新知识 S -->
<div
class="text-bar know"
style="display: flex; justify-content: space-between"
>
<div class="tabs" style="width: 95%">
<el-tabs
v-model="activeNameLatestKnowledge"
@tab-click="handleLatestKnowledge"
>

<el-tab-pane label="最新知识" name="latestKnowledgeFirst">
<div class="list">
<div
class="flex list-item"
v-for="(item, index) in latestKnowledgeRows"
:key="index"
>
<div class="title">
<div
@click="jump('/special/detailed')"
style="vertical-align: middle"
>
<img
style="vertical-align: middle"
src="../../assets/file.png"
alt=""
/>
item.title
</div>
<div class="msg"> item.releaseTime </div>
</div>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="热门知识" name="latestKnowledgeSecond">
<div class="list">
<div
class="list-item flex"
v-for="(item, index) in popularKnowledgeRows"
:key="index"
>
<div class="flex title">
<div
@click="jump('/special/detailed')"
style="vertical-align: middle"
>
<img
style="vertical-align: middle"
src="../../assets/file.png"
alt=""
/>
item.title
</div>
<div class="msg"> item.releaseTime </div>
</div>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="排行榜" name="latestKnowledgeSecondThird">
<div class="list">
<div
class="list-item flex"
v-for="(item, index) in rankingListRows"
:key="index"
>
<div class="flex title">
<div
@click="jump('/special/detailed')"
style="vertical-align: middle"
>
<img
style="vertical-align: middle"
src="../../assets/file.png"
alt=""
/>
item.title
</div>
<div class="msg"> item.releaseTime </div>
</div>
</div>
</div>
</el-tab-pane>
</el-tabs>
</div>
<div style="margin-top: 30px">
<el-link
class="title-msg"
:underline="false"
@click="jump('/strategyThinkManage')"
>更多 <i class="el-icon-arrow-right"></i
></el-link>
</div>
</div>
<!-- 最新知识 E -->
</template>

<script>
export default
data()
return
activeNameLatestKnowledge: "latestKnowledgeFirst", // 默认显示最新知识数据页面
latestKnowledgeRows: [], // 最新知识数据
popularKnowledgeRows: [], //热门知识数据
rankingListRows: [], //排行榜数据
;
,

</script>
登录后复制

引入api

import knowledgeListDetail, rankingListDetail from "@/api/home.js";
登录后复制
在methods通过if判断(if...else语句)去进行接口调试。

在created里调用接口(一点击直接出现此页签的数据)

<script>
export default
methods:
/***
* 最新知识、热门知识、排行榜
*/
handleLatestKnowledge(tab)
if (tab.name != "latestKnowledgeSecondThird")
if (tab.name == "latestKnowledgeFirst")
let rows =
rankingType: "最新知识",
;
knowledgeListDetail(rows).then((res) =>
if (res.rows)
// 渲染数据
this.latestKnowledgeRows = res.rows;

);
else
let rows =
rankingType: "热门知识",
;
knowledgeListDetail(rows).then((res) =>
if (res.rows)
this.popularKnowledgeRows = res.rows;

);

else
let rows =
rankingListType: "下载排行",
;
rankingListDetail(rows).then((res) =>
if (res.rows)
this.rankingListRows = res.rows;

);

,

created()
this.handleLatestKnowledge( name: "latestKnowledgeFirst" );
,
;
</script>
登录后复制

vue.js
ui
javascript
红警单机版手游下载
精选推荐
广告

基于vueelementui的后台管理系统动态tabs实践
19下载·0评论
2019年8月10日
使用vue实现tab操作
165阅读·0评论·0点赞
2017年7月3日
vue不同组件之间接口先后调用的顺序
1681阅读·0评论·0点赞
2021年2月4日
el-tabs 实现多个 el-table表格 分页操作
1215阅读·0评论·0点赞
2022年5月27日
使用element中el-table动态增减表头列的时候出现抖动闪动的问题
4889阅读·1评论·4点赞
2020年7月6日
vue3使用Element-plus Tabs 标签页的点击事件
4976阅读·5评论
参考技术A 有三个可切换的tabs页签,红色的两个框里的tabs页签请求的是同一个接口,但是两个页签传递的参数值不一样,橙色的框里请求的是另一个接口。通过点击不同的tabs页签去跳转页面并请求不同的接口返回的数据。默认显示最新知识页签的数据。html页面:最新知识和热门知识调的是同一个接口,排行榜是一个接口。接口:最新知识和热门知识的接口给后端传的参数rankingType(直接传汉字 ):"最新知识" or "热门知识"。排行榜的接口给后端传的参数rankingListType :"下载排行"。实现:在api文件里新建相关文件存储接口代码【get请求用拼接】【get请求传参用param、post请求传参用data】/*** 最新知识、热门知识*/export function knowledgeListDetail(param) return request(url: '/api/knowledge/ranking/listDetail?' + 'rankingType=' + param.rankingType,headers: isToken: true,'Access-Control-Allow-Origin':'*',,method: 'get',)/*** 排行榜*/export function rankingListDetail(param) return request(url: '/api/knowledge/rankingList/listDetail?' + 'rankingListType=' + param.rankingListType,headers: isToken: true,'Access-Control-Allow-Origin':'*',,method: 'get',)登录后复制在html引入element组件里tabs页签的代码,根据具体需求更改代码。<template><!-- 最新知识 S --><divclass="text-bar know"style="display: flex; justify-content: space-between"><div class="tabs" style="width: 95%"><el-tabsv-model="activeNameLatestKnowledge"@tab-click="handleLatestKnowledge"><el-tab-pane label="最新知识" name="latestKnowledgeFirst"><div class="list"><divclass="flex list-item"v-for="(item, index) in latestKnowledgeRows":key="index"><div class="title"><div@click="jump('/special/detailed')"style="vertical-align: middle"><imgstyle="vertical-align: middle"src="../../assets/file.png"alt=""/> item.title </div><div class="msg"> item.releaseTime </div></div></div></div></el-tab-pane><el-tab-pane label="热门知识" name="latestKnowledgeSecond"><div class="list"><divclass="list-item flex"v-for="(item, index) in popularKnowledgeRows":key="index"><div class="flex title"><div@click="jump('/special/detailed')"style="vertical-align: middle"><imgstyle="vertical-align: middle"src="../../assets/file.png"alt=""/> item.title </div><div class="msg"> item.releaseTime </div></div></div></div></el-tab-pane><el-tab-pane label="排行榜" name="latestKnowledgeSecondThird"><div class="list"><divclass="list-item flex"v-for="(item, index) in rankingListRows":key="index"><div class="flex title"><div@click="jump('/special/detailed')"style="vertical-align: middle"><imgstyle="vertical-align: middle"src="../../assets/file.png"alt=""/> item.title </div><div class="msg"> item.releaseTime </div></div></div></div></el-tab-pane></el-tabs></div><div style="margin-top: 30px"><el-linkclass="title-msg":underline="false"@click="jump('/strategyThinkManage')">更多 <i class="el-icon-arrow-right"></i></el-link></div></div><!-- 最新知识 E --></template><script>export default data() return activeNameLatestKnowledge: "latestKnowledgeFirst", // 默认显示最新知识数据页面latestKnowledgeRows: [], // 最新知识数据popularKnowledgeRows: [], //热门知识数据rankingListRows: [], //排行榜数据;,</script>登录后复制引入apiimport knowledgeListDetail, rankingListDetail from "@/api/home.js";登录后复制在methods通过if判断(if...else语句)去进行接口调试。在created里调用接口(一点击直接出现此页签的数据)<script>export default methods: /**** 最新知识、热门知识、排行榜*/handleLatestKnowledge(tab) if (tab.name != "latestKnowledgeSecondThird") if (tab.name == "latestKnowledgeFirst") let rows = rankingType: "最新知识",;knowledgeListDetail(rows).then((res) => if (res.rows) // 渲染数据this.latestKnowledgeRows = res.rows;); else let rows = rankingType: "热门知识",;knowledgeListDetail(rows).then((res) => if (res.rows) this.popularKnowledgeRows = res.rows;); else let rows = rankingListType: "下载排行",;rankingListDetail(rows).then((res) => if (res.rows) this.rankingListRows = res.rows;);,created() this.handleLatestKnowledge( name: "latestKnowledgeFirst" );,;</script>登录后复制vue.jsuijavascript红警单机版手游下载精选推荐广告基于vueelementui的后台管理系统动态tabs实践19下载·0评论2019年8月10日使用vue实现tab操作165阅读·0评论·0点赞2017年7月3日vue不同组件之间接口先后调用的顺序1681阅读·0评论·0点赞2021年2月4日el-tabs 实现多个 el-table表格 分页操作1215阅读·0评论·0点赞2022年5月27日使用element中el-table动态增减表头列的时候出现抖动闪动的问题4889阅读·1评论·4点赞2020年7月6日vue3使用Element-plus Tabs 标签页的点击事件4976阅读·5评论
抢首赞
梅妈不再隐瞒,说出梅艳芳去世内幕:并非因癌症去世,究竟怎么回事?
梅艳芳是一个乐坛的传奇人物,一个无人能及的亚洲天后,她的一生是那么唯美,却也透露着一丝凄凉。家中的贫
181浏览
包工头拖欠农民工工资违法吗
视频回答
259点赞19浏览
大S具俊晔为李玖哲演唱会送花篮,大S和具俊晔最早是怎么相识的?
据说大S和具俊晔最早是因为节目相识的,当年具俊晔在圈内非常有名,大S对具俊晔早就有所耳闻,只不过两人

在移动标签时调用方法 - 角度

我试图在标签移动时调用一个方法但面临一点混乱。我正在使用“点击”但这是在点击该标签下的任何内容时工作。这里我的意图是移动tab,方法应该是click。如果有任何想法请帮助我。

这是我的模板类:

<tabs>
<tab heading="It's First tab" (click)="firstTab()">
       First tab content
</tab>   
<tab heading="It's Second tab" (click)="secondTab()">
       second tab content
</tab>   
<tab heading="It's Third tab" (click)="thirdTab()">
     third tab content
</tab>     
</tabs>
答案

正如您在组件documentation中看到的那样,每次选择选项卡时都会发出一个名为selected的EventEmitter。因此,尝试使用以下内容更改代码:

<tabs>
    <tab heading="It's First tab" (selected)="firstTab()">
        First tab content
    </tab>   
    <tab heading="It's Second tab" (selected)="secondTab()">
        second tab content
    </tab>   
    <tab heading="It's Third tab" (selected)="thirdTab()">
        third tab content
    </tab>     
</tabs>

以上是关于vue点击tab时调用接口的主要内容,如果未能解决你的问题,请参考以下文章

vue中的$EventBus.$emit$on 遇到的问题

vue点击tab跳转页面,给点击的tab添加样式,且解决刷新以后点击的tab样式消失问题

UIView touchesEnded 事件未在第一次点击时调用,但在再次点击时调用

vue点击tab改变背景颜色

在通知点击事件时调用活动

vue中tab标签页keep-alive二级路由+删除指定缓存页面