中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue在html標簽{{}}中怎么調用函數

發布時間:2023-05-10 14:57:38 來源:億速云 閱讀:113 作者:iii 欄目:開發技術

這篇文章主要介紹“vue在html標簽{{}}中怎么調用函數”,在日常操作中,相信很多人在vue在html標簽{{}}中怎么調用函數問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”vue在html標簽{{}}中怎么調用函數”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    一、問題

    1.在html中對數據中的某一個標簽是根據標簽的類型書寫的,值寫在了{{}}中,希望顯示的時候對值做某種細節處理。

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

    1)實現上述需求:有兩種方式

    a.方式一:

    直接在接口調用收到數據時判斷數據類型,并對數據進行處理。

    b.方式二:

    在顯示的時候再調用函數處理數據(html標簽的{{}}中處理)

    2)兩種實現方式對比:

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

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

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

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

    所以選擇方式二實現需求,怎樣在html渲染時調用函數呢?

    二、解決方法(在html渲染時調用函數)

    1.定義處理函數

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

    2.引入處理函數,在data中定義函數,在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.引入處理出生日期顯示的函數
    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中定義該方法,否則無法直接使用(報錯:html中使用的函數不存在或不是響應式的)

    1)在data中定義

      data(){
        formatDateMethod:formatBorntime,
    
    }

    2)在methods中定義

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

    3.效果

    vue在html標簽{{}}中怎么調用函數

    4.優化

    補充更新

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

    原因:computed可以緩存計算結果,在borntime沒有變化時,不會再次調用處理邏輯。而直接寫的方法調用,在每次渲染HTML時都會被調用。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.引入處理出生日期顯示的函數
    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.根據 personInfo.borntime.value 處理 borntime的格式(因為要渲染整個personInfo,所以personInfo一定是變化的,可以正確拿到borntime)
          borntime_deal(){
              return formatBorntime(personInfo.borntime.value).toString()
          }
      }
    }
    </script>

    到此,關于“vue在html標簽{{}}中怎么調用函數”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    大同县| 涞水县| 日照市| 玉门市| 曲周县| 星子县| 吴川市| 山东省| 阿勒泰市| 雅安市| 仁化县| 宣恩县| 晋城| 新龙县| 阜平县| 奉节县| 黔东| 瓦房店市| 汨罗市| 思茅市| 徐水县| 喀喇沁旗| 栾川县| 南雄市| 青川县| 元谋县| 平罗县| 六枝特区| 曲水县| 保定市| 景泰县| 阳高县| 大同县| 江安县| 光山县| 安达市| 黔西| 建阳市| 白银市| 梁山县| 图木舒克市|