在字符串的一部分中使用过滤器

时间:2016-01-26 19:12:15

标签: vue.js

我有一个过滤器,根据它的统计类型(百分比,整数,货币等)格式化数字。我想在值上使用此过滤器作为字符串的一部分。见下文:

<js-widget
                v-on:click="this.selectedReportId = key"
                :selected="this.selectedReportId == key"
                :icon="report.icon"
                :stat="report.current | stat report.statType"
                :title="report.title"
                :tooltip="report.tooltip"
                :percent="report.percent"
                :description="'Previous value: '+(report.past | stat report.statType)">
</js-widget>

正如您在:stat参数中看到的,如果表达式中唯一的东西,我可以使用过滤器。但是当它尝试评估:description参数时,我得到Error when evaluating expression。是否可以这种方式使用过滤器?

2 个答案:

答案 0 :(得分:2)

过滤器在您正在评估的表达式之外是可用的 - 因此不能以语音方式工作

我会使用computed属性。有关详细信息,请参阅http://vuejs.org/guide/computed.html

答案 1 :(得分:1)

问了问题已经很久了,但是如果有人搜索,我碰巧知道解决方法。 首先,有一种方法可以从vue组件内部调用过滤器。实际上,所有过滤器都存储在

this.$options.filters

集合。因此,如果您想从组件内部调用过滤器,则应该

...
this.$options.filters.stat(report.past, report.statType)
...

如果您想从标记中做同样的事情,还应该调用filter而不是filter(|语法),而是调用组件方法

<js-widget
                v-on:click="this.selectedReportId = key"
                :selected="this.selectedReportId == key"
                :icon="report.icon"
                :stat="report.current | stat report.statType"
                :title="report.title"
                :tooltip="report.tooltip"
                :percent="report.percent"
                :description="'Previous value: '+ $options.filters.stat(report.past, report.statType)">
</js-widget>

或者更好的是使用模板字符串

:description = "`Previous value: ${$options.filters.stat(report.past, report.statType)}`"