vue中的計(jì)算屬性傳參
vue計(jì)算屬性傳參
最近很多小伙伴問到,計(jì)算屬性怎么做到像普通函數(shù)一樣傳參呢?
針對(duì)這個(gè)問題
我們來看看下面的示例
<template>
?? ?<p>{{ getCallerName }}</p>
?</template>
<script>
export default {
?? ?props: {
?? ??? ?callRecord: {
?? ??? ??? ?type: Object,
? ? ? ? ? ? default: () => ({}),
? ? ? ? }
?? ?},
?? ?computed:{
?? ??? ?// 獲取名稱
? ? ? ? getCallerName() {
? ? ? ? ?? ?return 'callerName'
? ? ? ? },
?? ?}
}這個(gè)示例,我們接收一個(gè)從父組件傳過來的屬性值 callRecord,對(duì)象類型
需求:我們需要根據(jù)接收值中的type字段,去判斷應(yīng)該解析名稱為“主叫名稱”還是“被叫名稱”
因?yàn)橛?jì)算屬性具有緩存效果,所以我們期望用計(jì)算屬性去獲?。ó?dāng)然,過濾器也能使用,方法有很多,這里不用較真)
所以,這里我們就要想辦法把我們的值當(dāng)做參數(shù)傳進(jìn)去。
官網(wǎng)并沒解釋計(jì)算屬性應(yīng)該怎么傳值,但是呢,計(jì)算屬性都會(huì)返回一個(gè)值,基于這個(gè)條件,我們就想到了另一個(gè)只知識(shí)點(diǎn) 閉包
閉包:閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù),簡(jiǎn)單點(diǎn)說,就是嵌套函數(shù)(關(guān)于閉包的解釋和使用,大家可以查閱相關(guān)資料,這里就不過多贅述了)
有了思路,我們就開始試試看
<template>
?? ?<p>{{ getCallerName(callRecord) }}</p>
?</template>
<script>
export default {
?? ?props: {
?? ??? ?callRecord: {
?? ??? ??? ?type: Object,
? ? ? ? ? ? default: () => ({}),
? ? ? ? }
?? ?},
?? ?computed:{
?? ??? ?// 獲取名稱
? ? ? ? getCallerName() {
? ? ? ? ?? ?return callRecord => {
? ? ? ? ? ? ? ? if (callRecord.type === 1 || callRecord.type === 2) return callRecord.callerName;
? ? ? ? ? ? ? ? return callerInfo.callerNumber;
? ? ? ? ? ? };
? ? ? ? },
?? ?}
}觀察兩段代碼可以看出,我們?cè)谟?jì)算屬性里return了一個(gè)函數(shù),這個(gè)函數(shù)的參數(shù)即我們傳入的值,而內(nèi)部也能直接拿到并使用這個(gè)值,這樣就做到了計(jì)算屬性傳參(當(dāng)然,多個(gè)參數(shù)也是可行的)
好了,以上就是對(duì)計(jì)算屬性如何傳參的介紹使用
vue計(jì)算屬性傳參,根據(jù)值不同,渲染相應(yīng)的內(nèi)容
業(yè)務(wù)描述
在開發(fā)項(xiàng)目過程中,后臺(tái)傳過來一個(gè)數(shù)組,根據(jù)類型顯示相應(yīng)內(nèi)容。
1、可以直接在渲染出用三目表達(dá)式選擇渲染內(nèi)容??煽蛇x擇的條件多了,就不適用了,也不利于擴(kuò)展。
2、采用計(jì)算屬性。
<template v-for="(item,index) in languageAddDataArray" >
<el-form-item :label=getLanguageType(item.languageType) >
? ? <el-input v-model="item.content" ?auto-complete="off" size="mini"> </el-input>
</el-form-item>
?</template>
<script>
? ? ? ? ? ?export default {
? ? ? ? ?data () {
? ?languageAddDataArray:[],
? ? ? ? ?},
? ? ? ? computed:{
? getLanguageType(){
? ? ? ? return function (type) {
? ?return type==1?'中文':'英文';
? ? ? ? }
? ?}
? ? ? ?}
? ? ? ? ? ?}
</script>以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Django Vue實(shí)現(xiàn)動(dòng)態(tài)菜單和動(dòng)態(tài)權(quán)限
本文主要介紹了Django Vue實(shí)現(xiàn)動(dòng)態(tài)菜單和動(dòng)態(tài)權(quán)限,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
Vue+Element ui 根據(jù)后臺(tái)返回?cái)?shù)據(jù)設(shè)置動(dòng)態(tài)表頭操作
這篇文章主要介紹了Vue+Element ui 根據(jù)后臺(tái)返回?cái)?shù)據(jù)設(shè)置動(dòng)態(tài)表頭操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Vue中ElementUI結(jié)合transform使用時(shí)彈框定位不準(zhǔn)確問題解析
在近期開發(fā)中,需要將1920*1080放到更大像素大屏上演示,所以需要使用到transform來對(duì)頁(yè)面進(jìn)行縮放,但是此時(shí)發(fā)現(xiàn)彈框定位出錯(cuò)問題,無(wú)法準(zhǔn)備定位到實(shí)際位置,本文給大家分享Vue中ElementUI結(jié)合transform使用時(shí)彈框定位不準(zhǔn)確解決方法,感興趣的朋友一起看看吧2024-01-01
vue+elementUI實(shí)現(xiàn)動(dòng)態(tài)面包屑
這篇文章主要為大家詳細(xì)介紹了vue+elementUI實(shí)現(xiàn)動(dòng)態(tài)面包屑,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
uniapp實(shí)現(xiàn)紅包動(dòng)畫效果代碼實(shí)例(vue3)
uniapp作為一種基于Vue.js的前端框架,實(shí)現(xiàn)了一套代碼多端運(yùn)行的理念,成為了眾多開發(fā)者的首選,下面這篇文章主要給大家介紹了關(guān)于uniapp實(shí)現(xiàn)紅包動(dòng)畫效果的相關(guān)資料,需要的朋友可以參考下2024-01-01
vue實(shí)現(xiàn)頁(yè)面自適應(yīng)的常用4種方法
前端頁(yè)面自適應(yīng)有很多方法可以實(shí)現(xiàn),本文小編將為大家詳細(xì)介紹四種常用的方法,并提供相應(yīng)的代碼示例,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
vue.js中proxyTable 轉(zhuǎn)發(fā)請(qǐng)求的實(shí)現(xiàn)方法
今天小編就為大家分享一篇vue.js中proxyTable 轉(zhuǎn)發(fā)請(qǐng)求的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09

