如何在外部filter.ts文件中使用Vue.filter并在组件中使用(例如{{value | currency}})

时间:2019-01-08 10:15:43

标签: typescript vue.js

我目前正在尝试在Vue项目中实现TypeScript。到目前为止,一切都很好。但是现在我正在尝试通过外部ts.file来实现Vue.filters

在当前的js设置中,此工作可以很好地完成,但是在ts文件中导出过滤器功能会导致错误。

JS解决方案:

// utils.js
export function currency (value, digits) {
    let n = value
    digits = isNaN(digits = Math.abs(digits)) ? 2 : digits
    const s = n < 0 ? '-' : ''
    const i = String(parseInt(n = Math.abs(Number(n) || 
    0).toFixed(digits)))
    let j = (j = i.length) > 3 ? j % 3 : 0
    return '€ ' + s + (j ? i.substr(0, j) + '.' : '') + 
    i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + '.') + (digits ? 
    ',' + Math.abs(n - i).toFixed(digits).slice(2) : '')
}

// main.js
import * as filters from '@/utils/filters'

Object.keys(filters).forEach(k => Vue.filter(k, filters[k]))

这有效,现在当我尝试在TS中做同样的事情时……

// utils.ts
export class Filters {
    currency(value: any, digits: any) {
        let n = value
        digits = isNaN(digits = Math.abs(digits)) ? 2 : digits
        const s = n < 0 ? '-' : ''
        const i = String(parseInt(n = Math.abs(Number(n) || 
        0).toFixed(digits)))
        let j = (j = i.length) > 3 ? j % 3 : 0
        return '€ ' + s + (j ? i.substr(0, j) + '.' : '') + 
        i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + '.') + (digits 
        ? ',' + Math.abs(n - i).toFixed(digits).slice(2) : '')
    }
 }

如果有人可以指出我应该如何构建utils.ts文件,那将非常棒。我已经研究了两天,没有任何结果。

0 个答案:

没有答案