我有一个过滤器,根据它的统计类型(百分比,整数,货币等)格式化数字。我想在值上使用此过滤器作为字符串的一部分。见下文:
<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
。是否可以这种方式使用过滤器?
答案 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)}`"