Vue グローバル フィルターの使用とテンプレートの三項演算子でのフィルターの使用

Vue グローバル フィルターの使用

次のように新しい filters.js を作成します。コンテンツ フィルタリング用の独自の関数を作成できます。エクスポートすることを忘れないでください。

import dayjs from "dayjs";

// 转小写
let lower = value => value.toLowerCase();
// 转大写
let upper = value => value.toUpperCase();
let currencyStyle = (value, style) => {
    
     // 货币格式
    /**
     * style: 
     *   currency:货币
     *   number: 数字格式
     */
    if (style == 'number') {
    
     // 数字格式
        return parseFloat(value.replace(/[^\d\.-]/g, ""));
    } else {
    
     // 货币格式, 并保留2位小数
        var n = 2;
        value = parseFloat((value + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
        var l = value.split(".")[0].split("").reverse(),
            r = value.split(".")[1];
        var t = "";
        for (var i = 0; i < l.length; i++) {
    
    
            t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
        }
        return t.split("").reverse().join("") + "." + r;
    }
}

/**
 * 时间过滤器
 * @param {*} time 传入毫秒 
 * @returns 返回0′23″这样子
 */
let timeFilter = (time) => {
    
     // 货币格式
    if (time == null || time == undefined || time == 0) {
    
    
        return time;
    }
    const day = dayjs(0).millisecond(Number.parseInt(time));
    let str = "";
    if (day.minute() >= 0) {
    
    
        str += day.minute() + "′";
    }
    if (day.second() >= 0) {
    
    
        str += day.second() + "″";
    }
    return str;
}
export {
    
    
    lower,
    upper,
    currencyStyle,
    timeFilter
}

main.jsで導入されました

//挂载全局过滤
import * as filters from '@/utils/filters.js'
Object.keys(filters).forEach(key => {
    
    
  Vue.filter(key, filters[key])
})

ローカルコンポーネントでシーンを直接使用する

例: 三項でフィルターを使用する

    <span >{
    
    {
    
    item.qualified == null? "-": $options.filters.timeFilter(item.qualified)}}</span>

例: ページ内で直接フィルタリングを使用する

  <el-table-column label="(表现 | 分数)" align="center" min-width="200">
       <template slot-scope="scope">
           <div class="cur">
               {
    
    {
    
    scope.row.cantileveredArm | timeFilter }}</span>
           </div>
       </template>
 </el-table-column>

おすすめ

転載: blog.csdn.net/qq_38594056/article/details/118219585