第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Vue.js 中按類將文本附加到多個元素

在 Vue.js 中按類將文本附加到多個元素

慕田峪7331174 2023-10-20 15:14:11
我知道我想做的是直接修改 dom(在 vue.js 中不行),但是我能想到的唯一替代方案會創(chuàng)建更草率且更難以維護的代碼。問題我正在使用 vue-i18n,根據(jù)用戶當(dāng)前選擇的語言,我想將貨幣符號移動到價格元素的前面或后面(我有許多元素在許多頁面上顯示價格,實際上超過 150 個) .)備擇方案我能想到的最好的替代方案是為每個需要交換的元素添加一個綁定,但要做到這一點,我必須在該網(wǎng)站有價格的 15 個單獨頁面中的每個頁面中:class添加大量 + v-ifs+額外標(biāo)記mapGetters上(+ vuex 邏輯)。我可能還必須在 css 中使用::beforeand ::after,為每種語言創(chuàng)建一個類,并在每種語言中添加符號content: ''。新考慮的解決方案我認(rèn)為簡單地使用一個mounted鉤子(以便子視圖完全渲染)然后調(diào)用一個函數(shù)在包含該類的所有元素之前或之后附加貨幣符號可能會更app.vue干凈。nextTick()priceItem這樣,我就不會有所有額外的標(biāo)記和v-ifs 污染我的模板,盡管我會直接修改 dom,盡管只有在所有內(nèi)容都渲染之后。是否有任何替代方案可以讓我獲得我想要的簡單性,但仍然使用 Vue 類型模式來完成它?示例代碼(app.vue)   this.$nextTick(function () {  // Get currently selected lang from i18n  let lang = this.$i18n.locale  // get correct currency symbol for selected language  let symbol = ''  switch (lang) {    case 'ko':      symbol = '?'      break    case 'en':      symbol = '$'      break    case 'ja':      symbol = '¥'      break    case 'zh':      symbol = '¥'      break    case 'es':      symbol = '€'      break    case 'ru':      symbol = '?'      break  }  // if lang is Korean append symbol after, else append before  if (lang !== 'ko') {    document      .querySelector('priceItem')      .insertAdjacentText('beforeBegin', symbol)  } else {    document      .querySelector('priceItem')      .insertAdjacentText('afterBegin', symbol)  }})編輯:想想看,這在道具中可能會更好computed,這樣我就可以在用戶更改語言時重新分配符號。
查看完整描述

1 回答

?
慕村225694

TA貢獻1880條經(jīng)驗 獲得超4個贊

對于任何正在尋找 Vue 快速解決方案的人,我使用這個包來解決我的問題:


https://github.com/vinayakkulkarni/vue-intl-numberformat


我在模板中使用了以下格式:


<vue-intl-numberformat

   locale="en-IN"

   format-style="currency"

   :currency="getCurrency"

   :number="item.price"

 />

...


computed: {

   ...mapGetters(['getCurrency'])

}

然后我根據(jù) i18n 中主動選擇的語言通過 getter 向其傳遞正確的貨幣。


(在我的 vuex 商店中)


  getCurrency: (state) => {

    let activeLang = i18n.locale

    let currency = ''


    switch (activeLang) {

      case 'en':

        currency = 'USD'

        break

      case 'ko':

        currency = 'KRW'

        break

      case 'ja':

        currency = 'JPY'

        break

      case 'es' || 'fr' || 'it':

        currency = 'EUR'

        break

      case 'zh':

        currency = 'CNY'

        break

      case 'ru':

        currency = 'RUR'

        break

    }

    state.currency = currency

    return state.currency

  }

這似乎是迄今為止最干凈的解決方案。


查看完整回答
反對 回復(fù) 2023-10-20
  • 1 回答
  • 0 關(guān)注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號