最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue在html標(biāo)簽{{}}中調(diào)用函數(shù)的方法總結(jié)及對(duì)比

 更新時(shí)間:2023年03月29日 10:07:23   作者:琹箐  
這篇文章主要給大家介紹了關(guān)于vue在html標(biāo)簽{{}}中調(diào)用函數(shù)的方法總結(jié)及對(duì)比,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、問題

1.在html中對(duì)數(shù)據(jù)中的某一個(gè)標(biāo)簽是根據(jù)標(biāo)簽的類型書寫的,值寫在了{(lán){}}中,希望顯示的時(shí)候?qū)χ底瞿撤N細(xì)節(jié)處理。

例如:我的需求:后端返回姓名、年齡、出生日期、學(xué)歷等組成的一個(gè)數(shù)組,出生日期要保存為帶有時(shí)分秒的,但是顯示時(shí)不需要時(shí)分秒。

1)實(shí)現(xiàn)上述需求:有兩種方式

a.方式一:

直接在接口調(diào)用收到數(shù)據(jù)時(shí)判斷數(shù)據(jù)類型,并對(duì)數(shù)據(jù)進(jìn)行處理。

b.方式二:

在顯示的時(shí)候再調(diào)用函數(shù)處理數(shù)據(jù)(html標(biāo)簽的{{}}中處理)

2)兩種實(shí)現(xiàn)方式對(duì)比:

前提:由于有些要用輸入框、有些要用下拉框,有些又要用日期選擇框;我使用v-for渲染時(shí)就根據(jù)不同的控件類型分別渲染。

a.如果使用方式一就會(huì)二次對(duì)是否是出生日期的判斷(第一次接收到數(shù)據(jù)去除時(shí)分秒要判斷,第二次html渲染的時(shí)候判斷);使用方式二則只需要對(duì)是否是出生日期進(jìn)行一次判斷(只在html渲染的時(shí)候判斷)——方式二能減少 if-else書寫的次數(shù)

b.如果數(shù)據(jù)還需要原樣返回給后端,那么使用方式二顯然是perfect,沒有修改原數(shù)據(jù),只是返回了想要的數(shù)據(jù);使用方式一就必須存一個(gè)備份數(shù)據(jù),如果需要單獨(dú)處理的數(shù)據(jù)多了,簡(jiǎn)直就是一場(chǎng)災(zāi)難(保留一堆其實(shí)沒必要保存的數(shù)據(jù))——方式二保留了原始數(shù)據(jù),避免了冗余數(shù)據(jù)

c.如果有很多地方需要進(jìn)行同樣的處理,函數(shù)無疑是更好的選擇。——一次書寫,多處調(diào)用,提高了代碼的可維護(hù)性

所以選擇方式二實(shí)現(xiàn)需求,怎樣在html渲染時(shí)調(diào)用函數(shù)呢?

二、解決方法(在html渲染時(shí)調(diào)用函數(shù))

1.定義處理函數(shù)

//與后端約定返回的數(shù)據(jù)格式是這樣的:'2020-04-09 08:30:00' 年月日和時(shí)分秒之間用空格分隔
export const formatBorntime=(borntime)=>{
   //處理邏輯
   //******
 
   //返回處理好的數(shù)據(jù)
   return borntime.split(" ")[0];
}

2.引入處理函數(shù),在data中定義函數(shù),在html中使用

<template>
   <div v-for="(item,key) of personInfo">
     <template v-if="key === 'borntime'">
          <div class="info-title">{{ item.label }}</div>
          <span>:</span>
          <!-- 3.使用方法formatDateMethod-->
          <el-tooltip
            effect="dark"
            :content="formatDateMethod(new Date(item.value))).toString()"
            placement="top"
          >
            <!-- 3.使用方法formatDateMethod-->
            <div class="info-content">
              {{
                formatDateMethod(new Date(item.value)).toString()
              }}
            </div>
          </el-tooltip>
        </template>
        <template v-else>
          <div class="info-title">{{ item.label }}</div>
          <span>:</span>
          <el-tooltip
            effect="dark"
            :content="item.value.toString()"
            placement="top"
          >
            <div class="info-content">
              {{ item.value }}
            </div>
          </el-tooltip>
        </template>
   </div>
</template>
<script>
//1.引入處理出生日期顯示的函數(shù)
import { formatBorntime } from "@/utils/common";
export default{
  data(){
    //2.在data中定義方法
    formatDateMethod:formatBorntime,
    personInfo: {
        patientname: {
          label: "姓名",
          value: "",
        },
        patientage: {
          label: "年齡",
          value: "",
        },
        borntime: {
          label: "出生日期",
          value: "2022-04-06 00:00:00",
        },
        height: {
          label: "身高(cm)",
          value: "",
        },
 
      },
  }
}
</script>

注:必須在data中定義  或者  methods中定義該方法,否則無法直接使用(報(bào)錯(cuò):html中使用的函數(shù)不存在或不是響應(yīng)式的)

1)在data中定義

? data(){
? ? formatDateMethod:formatBorntime,

}

2)在methods中定義

? methods: {
? ? formatDateMethod(params1){
? ? ? return formatBorntime?(params1);
? ? }

? }

3.效果

4.優(yōu)化

補(bǔ)充更新

上面的方法的確可以解決問題,但是更合理的方式是  使用 computed計(jì)算屬性,computed中寫處理邏輯(personInfo變化時(shí),處理 borntime的格式)。

原因:computed可以緩存計(jì)算結(jié)果,在borntime沒有變化時(shí),不會(huì)再次調(diào)用處理邏輯。而直接寫的方法調(diào)用,在每次渲染HTML時(shí)都會(huì)被調(diào)用。computed 性能更好一些。

<template>
   <div v-for="(item,key) of personInfo">
     <template v-if="key === 'borntime'">
          <div class="info-title">{{ item.label }}</div>
          <span>:</span>
          <!-- 3.使用computed屬性 borntime_deal -->
          <el-tooltip
            effect="dark"
            :content="borntime_deal"
            placement="top"
          >
            <!-- 3.使用computed屬性 borntime_deal-->
            <div class="info-content">
              {{
               borntime_deal
              }}
            </div>
          </el-tooltip>
        </template>
        <template v-else>
          <div class="info-title">{{ item.label }}</div>
          <span>:</span>
          <el-tooltip
            effect="dark"
            :content="item.value.toString()"
            placement="top"
          >
            <div class="info-content">
              {{ item.value }}
            </div>
          </el-tooltip>
        </template>
   </div>
</template>
<script>
//1.引入處理出生日期顯示的函數(shù)
import { formatBorntime } from "@/utils/common";
export default{
  data(){
    personInfo: {
        patientname: {
          label: "姓名",
          value: "",
        },
        patientage: {
          label: "年齡",
          value: "",
        },
        borntime: {
          label: "出生日期",
          value: "2022-04-06 00:00:00",
        },
        height: {
          label: "身高(cm)",
          value: "",
        },
 
      },
  },
  computed:{
    //  2.根據(jù) personInfo.borntime.value 處理 borntime的格式(因?yàn)橐秩菊麄€(gè)personInfo,所以personInfo一定是變化的,可以正確拿到borntime)
      borntime_deal(){
          return formatBorntime(personInfo.borntime.value).toString()
      }
  }
}
</script>

 三、總結(jié)

1.我也是今天遇到上面這個(gè)需求,突然想到這樣做。對(duì)比中第二點(diǎn)說的問題:其實(shí)之前遇到過類似的問題,有的地方需要對(duì)數(shù)據(jù)處理,有的地方又要保留原始數(shù)據(jù),但是還備份了一組數(shù)據(jù),現(xiàn)在想想就是給自己制作麻煩,還浪費(fèi)了空間……

到此這篇關(guān)于vue在html標(biāo)簽{{}}中調(diào)用函數(shù)的方法總結(jié)及對(duì)比的文章就介紹到這了,更多相關(guān)vue在html標(biāo)簽{{}}調(diào)用函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-cli 自定義指令directive 添加驗(yàn)證滑塊示例

    vue-cli 自定義指令directive 添加驗(yàn)證滑塊示例

    本篇文章主要介紹了vue-cli 自定義指令directive 添加驗(yàn)證滑塊示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Vue面試必備之防抖和節(jié)流的使用

    Vue面試必備之防抖和節(jié)流的使用

    在這篇文章中,大家會(huì)了解到如何在 Vue 組件中使用防抖和節(jié)流控制 觀察者(watchers)以及事件處理程序,文中的示例代碼簡(jiǎn)潔易懂,希望對(duì)大家有所幫助
    2023-03-03
  • vite+vue3項(xiàng)目報(bào)錯(cuò):TypeError:?Promise.allSettled?is?not?a?function

    vite+vue3項(xiàng)目報(bào)錯(cuò):TypeError:?Promise.allSettled?is?not?a?fu

    Vite+Vue3項(xiàng)目中遇到“TypeError:?Promise.allSettled?is?not?a?function”錯(cuò)誤,通常是因?yàn)楫?dāng)前運(yùn)行的JavaScript環(huán)境不支持Promise.allSettled,下面就來介紹幾種解決方法,感興趣的可以了解一下
    2024-12-12
  • Vue使用ElemenUI對(duì)table的指定列進(jìn)行合算的方法

    Vue使用ElemenUI對(duì)table的指定列進(jìn)行合算的方法

    這篇文章主要介紹了Vue使用ElemenUI對(duì)table的指定列進(jìn)行合算的方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Vue實(shí)現(xiàn)typeahead組件功能(非??孔V)

    Vue實(shí)現(xiàn)typeahead組件功能(非??孔V)

    本文給大家分享通過Vue寫一個(gè)挺靠譜的typeahead組件功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧
    2017-08-08
  • VUE2中的MVVM模式詳解

    VUE2中的MVVM模式詳解

    這篇文章主要為大家介紹了VUE2中的MVVM模式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • element-ui圖片上傳組件查看和限制方式

    element-ui圖片上傳組件查看和限制方式

    這篇文章主要介紹了關(guān)于element-ui圖片上傳組件查看和限制方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue項(xiàng)目新一代狀態(tài)管理工具Pinia的使用教程

    Vue項(xiàng)目新一代狀態(tài)管理工具Pinia的使用教程

    pinia是一個(gè)輕量級(jí)的狀態(tài)管理庫,屬于 vue3 生態(tài)圈新的成員之一,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目新一代狀態(tài)管理工具Pinia的使用教程,需要的朋友可以參考下
    2022-11-11
  • vue?data中的return使用方法示例

    vue?data中的return使用方法示例

    當(dāng)一個(gè)組件被定義,data必須聲明為返回一個(gè)初始數(shù)據(jù)對(duì)象的函數(shù),因?yàn)榻M件可能被用來創(chuàng)建多個(gè)實(shí)例,下面這篇文章主要給大家介紹了關(guān)于vue?data中return使用,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Vue中router.beforeEach與beforeRouteEnter的區(qū)別及說明

    Vue中router.beforeEach與beforeRouteEnter的區(qū)別及說明

    這篇文章主要介紹了Vue中router.beforeEach與beforeRouteEnter的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評(píng)論

水富县| 西乡县| 湛江市| 靖江市| 象山县| 信宜市| 高安市| 河间市| 云浮市| 偏关县| 丹阳市| 克什克腾旗| 南开区| 惠州市| 准格尔旗| 封丘县| 阿荣旗| 卢湾区| 云和县| 平邑县| 望城县| 漾濞| 祁阳县| 富川| 敦煌市| 灵台县| 陆良县| 巴塘县| 定陶县| 宜州市| 苏尼特左旗| 会宁县| 宁强县| 扬中市| 金秀| 永嘉县| 余姚市| 大新县| 金山区| 勐海县| 香河县|