Vue 中的 filter 帶多參

場景

在 vue 項目中,團隊成員在模板中解析一個 json 字符串,而後這個字符串來自於後臺,因此是類型不安全,直接用 JSON.parse 就報錯了,這裏須要用 trycatch 下。html

實際是,由於這個解析 json 字符串的方法是純函數,且常常用在模板中,因此做爲 filter 合適,直接拷貝了其餘項目的這個方法過來做爲 fitlers 用,以下。vue

// omit other properties
  filters: {
    tryParseJsonString(jsonStr, defaultValue) {
      let ret = defaultValue;
      if (jsonStr) {
        try {
          ret = JSON.parse(jsonStr) || defaultValue;
        } catch (e) {
          console.warn('JSON格式不正確,解析失敗', e.message);
        }
      }

      return ret;
    }
  },
// ...

在模板中,能夠綁定到 v-bind,使用以下json

<template>
  <comp :images="li.value | tryParseJsonString([])" />
</template>

考慮到這個 filter 使用頻繁,因此能夠封裝進全局 mixin,避免頻繁的引用。安全

參考 https://vuejs.org/v2/guide/fi...ide

相關文章
相關標籤/搜索