Vue.js和vue-moment:“无法解决过滤器:时刻”

时间:2016-09-20 18:34:52

标签: javascript momentjs vue.js

尝试使用vue-moment。文档中最简单的示例不起作用:https://jsfiddle.net/rjcpz9wt/

<span>{{ new Date() | moment "dddd, MMMM Do YYYY" }}</span>

给出:

[Vue warn]: Failed to resolve filter: moment

发生了什么事?

4 个答案:

答案 0 :(得分:2)

vue-moment已被破坏。

您只需将其添加为<script>标记即可使用它。目前它只适用于使用webpack或browserify编译它,请参阅此issue了解更新。

它曾经在原始版本上运行良好: https://github.com/brockpetrie/vue-moment/tree/fd6fcb901415c1df4c5abb81870d49b346d3732f

查看在此处工作的原始版本:https://jsfiddle.net/gerardog/vaw33sn2/

此外,在Fiddle上不要链接到https://raw.github.com/中的文件,请使用此版本 workaround

答案 1 :(得分:2)

///// EDIT /////

显然,您根本不需要在Vue.filter(....)中花点时间。

Vue.use(VueMoment)中输入main.js后, 只需将过滤器(如其文档中所示)放在您应用程序中的任何位置即可,

//////////////

我遇到了同样的问题,通过不使用vue过滤器解决了

这是我的解决方法,我的main.js看起来像这样:

import Vue from 'vue'
import VueMoment from 'vue-moment';

Vue.use(VueMoment)

在组件中我需要使用的地方看起来像这样:

//IN METHODS:
methods: {
    tellTime(time) {
      console.log(this.$moment(time).format(' mm:ss'))
    }
}
<!-- OR IN TEMPLATE -->
      {{$moment(timestamp).fromNow()}}

希望其他人会发现它有用:)

答案 2 :(得分:0)

我不建议按照你的方式做,你应该在javascript代码中创建日期变量,只需访问Vue中的变量。这是一个显示我的意思的小提琴

https://jsfiddle.net/rdffywc7/

var app = new Vue({
  el: document.body,
  data: {
    date: moment().format("dddd, MMMM Do YYYY")
  }
})

然后在doc正文中

<span>{{ date }}</span>

答案 3 :(得分:0)

我的回答可能为时已晚,但对于现在正面临此问题的其他人仍然有用。正如@Gerardo Grignoli所说,vue-moment断了,所以我个人使用

placement:
  managedCluster:
    clusterName: my-cluster
    config:
      gceClusterConfig:
        zoneUri: europe-west1-d
      masterConfig:
        machineTypeUri: n1-standard-4
      workerConfig:
        machineTypeUri: n1-standard-4
        numInstances: 10