亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

在 Vue 過濾器中的 HTML 之間換行文本

在 Vue 過濾器中的 HTML 之間換行文本

慕婉清6462132 2021-12-02 15:53:04
在 vuejs 中,是否可以將文本的某些部分包裹在 HTML 標簽中?喜歡Hello %John%. How are you doing? 變成Hello <b>%John%</b>. How are you doing?帶有過濾器,例如{{text | wrapText}}
查看完整描述

3 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

您可以編寫自己的過濾器。


Vue.filter('wrapText', function (text) {

  let a = text.split('%');

  let str = '';

  for (let x = 0; x < a.length; x++) {

    str += a[x];

    if (x % 2 == 0) {

        if (x < a.length - 1)

        str += '<b>';

    }

    else {

        str += '</b>';

    }

  }

  return str

});


查看完整回答
反對 回復 2021-12-02
?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

我從未合作過,vue但我在過去 15 分鐘內讀了一點,我想我找到了解決方案。


您可以使用 javaScript 方法??赡苡懈啙嵉姆椒▉韺崿F相同的結果。


重要的事實是將 vue 自定義過濾器與:inner-html.prop. 它看起來不是很“安全”,但如果你控制在那里插入什么 html,你應該沒問題。


所以在 html 中你可以做類似的事情 <span :inner-html.prop="text | wrapText"></span>


然后聲明您的過濾器。我讀到有兩種方法可以聲明它們:全局或組件內部,您選擇。


全球范圍內


Vue.filter('wrapText', function (value) {

  const wordToWrap = value.substring(

    value.indexOf("%")+1, 

    value.lastIndexOf("%")

  )


  const wrappedWord = `<b>${wordToWrap}</b>`


  value = value.replace(wordToWrap, wrappedWord)


  return value;

})

這應該有效。我讓它在 vue 操場上工作。干杯!


查看完整回答
反對 回復 2021-12-02
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

正則表達式就是這樣:D


編輯:“2.0 過濾器僅適用于 mustache 標簽和 v-bind。”


cfr: https://github.com/vuejs/vue/issues/4352


new Vue({

  el: "#app",

  data: {

    text: 'Hello %John%. How are you doing %today%?'

  },

  filters: {

    wrapText(str) {

      return this.wrapText(str)

    }

  },

  methods: {

      wrapText(str) {

      if (str.includes('%')) {

          const reg = /(%[A-Za-z0-9]*%)/g

          const newStr = str.replace(reg, '<b>$1</b>')

          return newStr

        }

        return str

    }

  }

})

<div id="app">

  <h2>This is a text</h2>

  <p v-html="wrapText(text)">

  </p>

</div>


<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>


這filter部分不再需要,但我還是把它留下了。


查看完整回答
反對 回復 2021-12-02
  • 3 回答
  • 0 關注
  • 481 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號