如何在带有过滤器的Vue模板中使用三元运算符?

Posted

技术标签:

【中文标题】如何在带有过滤器的Vue模板中使用三元运算符?【英文标题】:How to use ternary operator in Vue template with filter? 【发布时间】:2021-04-01 09:57:04 【问题描述】:

我有一个应用可以根据桌面或移动设计设置过滤器,但三元运算符不起作用。

这里是组件调用:

<Metric
    prefix="R$"
    :is-numeric-subvalue="false"
    :is-total="true"
    subvalue="Abril à Maio"
    title="Disponível"
    :value="highlightData.available | defineFilter()"
/>

这是我定义过滤器的方法:

methods: 
  defineFilter () 
    const test = true
    const filter = test ? this.$options.filters.decimal(0) : this.$options.filters.shortedNumber()
    return filter
  

我的过滤器:

filters: 
  decimal: decimalFilter,
  shortedNumber: shortedNumberFilter

我收到了警告:

[Vue 警告]:无法解析过滤器:defineFilter

【问题讨论】:

我觉得不错。为什么你认为它不起作用? @NileshPatel 我不知道,不工作 Vue 返回警告“无法解析过滤器:defineFilter” 那是因为它在您的methods 中。将其移至filters @Dan 但是怎么做?将我的方法 defineFilter 移动到过滤器? 是的,过滤器也只是函数 【参考方案1】:

将您的过滤器移至filters 并删除这两种方法。过滤器将接收数字值作为参数。由于没有this 访问过滤器中的组件,您可以直接使用您的预定义函数:

filters: 
  defineFilter(num) 
    const test = true;
    return test ? decimalFilter(num) : shortedNumberFilter(num);
  

确保您的两个外部函数都准备好接收数字并返回一个值。这是demo

【讨论】:

以上是关于如何在带有过滤器的Vue模板中使用三元运算符?的主要内容,如果未能解决你的问题,请参考以下文章

在 AngularJS 的三元运算符中使用过滤器

11 v-if 更好颜色三元运算符

AngularJS - 在绑定中使用三元运算符和过滤器

带有对象的Javascript三元运算符

Python 使用带有 for 循环的三元运算符

vue中 :style 与 :class 三元运算符使用