【问题标题】:Call a global filter from a method in Vue.js从 Vue.js 中的方法调用全局过滤器
【发布时间】:2021-07-27 20:05:52
【问题描述】:

我有一个从这里使用的全局过滤器:https://www.npmjs.com/package/@vuejs-community/vue-filter-date-format 来格式化我可以从 html 调用的日期,如下所示:

{{new Date(VALUE) | dateFormat('MMM. DD, YYYY', dateFormatConfig)}}

我试图从一个方法中调用它。这就是 Vuejs 所说的调用方式。

this.$options.filters.FILTERNAME(VALUE)

但我不知道如何使这项工作。这不起作用,因为没有 VALUE

this.$options.filters.dateFormat('MMM. DD, YYYY', dateFormatConfig)

我也试过这个:

this.$options.filters.dateFormat('MMM. DD, YYYY', VALUE)

还有这个:

this.$options.filters.dateFormat(VALUE, 'MMM. DD, YYYY')

还有这个:

this.$options.filters.dateFormat('MMM. DD, YYYY', dateFormatConfig)(VALUE)

这些都不起作用。有谁知道如何从方法中正确调用它?

更新:

事实证明这确实有效:

this.$options.filters.dateFormat(VALUE, 'MMM. DD, YYYY')

我需要将 VALUE 转换为:new Date(VALUE)

所以最终结果是:

this.$options.filters.dateFormat(new Date(VALUE), 'MMM. DD, YYYY')

【问题讨论】:

  • 我在过滤器方面做得不多。如果没有人在这里解决您的问题,我建议您转到您发布的 npm 链接,单击 github 存储库链接,然后单击贡献者 Eduard。他列出了一封电子邮件。
  • 我不明白你所说的“这不起作用,因为没有VALUE”是什么意思,显然你在HTML版本中有new Date(VALUE)。
  • @TJ 我用 VALUE 替换了实际值以进行堆叠。 HTML 版本效果很好。我想从一个方法中调用它。
  • @Tim 我能够与开发人员取得联系。请参阅上面的更新。谢谢
  • @Jason 很高兴开发人员能够提供帮助。如果您的问题得到解决,您可能希望从问题更新中创建一个新答案,并接受该答案。这样其他人就知道问题已解决,并且可以在将来找到您的解决方案。

标签: javascript vue.js vuejs2 vue-filter


【解决方案1】:

我认为您的过滤器注册有问题。在您的 index.js(主应用程序文件)中,您应该导入为 import VueFilterDateFormat from '@vuejs-community/vue-filter-date-format'; 然后 Vue.use(VueFilterDateFormat); 或者您可以在某些组件中本地注册它。 然后您将能够按照基本用法指示使用它 [here]

【讨论】:

  • 我已经完全按照这种方式注册了它,并且能够以它的基本方式使用它。我想你误解了我的问题。我正在尝试从不是 HTML 的方法调用过滤器
  • 对不起。过滤器通常用于 html 预渲染。您应该为此使用 utils,或者为您的案例使用像 npmjs.com/package/moment 这样的库
  • 同意,不过,moment 的网站告诉我们要好好使用它们:/
猜你喜欢
  • 1970-01-01
  • 2018-07-19
  • 2020-06-01
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
  • 2022-01-25
  • 2018-01-31
  • 2019-06-11
相关资源
最近更新 更多