Ошибка типа: _vm.moment не является функцией в Vuejs - PullRequest
0 голосов
/ 11 октября 2019

У меня проблема с переходом на Vuejs.

После запуска npm install vue-moment и добавления в свой скрипт:

<script>

  const moment = require('vue-moment');
...
</script>

Я добавил это в свой <template>:

<h1>{{moment('2017-12-20 11:00').fromNow()}}</h1>

И я получаю эту ошибку:

[Vue warn]: ошибка при рендеринге: «Ошибка типа: _vm.moment не является функцией»

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Вы можете использовать его глобально, как сказал @ red-X, но вы можете добавить его только в свой компонент:

import moment from 'moment'

export default {
   data: () => ({
      moment: moment
   })
}

И затем вы можете получить к нему доступ в своем HTML-шаблоне.

Но я рекомендую вам использовать вычисленные переменные для использования такого рода кода, и чтобы не было логики в вашем HTML-шаблоне, просто визуализируйте вычисленные переменные внутри ваших шаблонов для удобства чтения.

И сВ этом решении вам не нужно иметь библиотеку моментов, доступную глобально или в вашем компоненте, только импорт.

Вот пример:

import moment from 'moment'

export default {
   computed: {
      distanceFromNow() {
         return moment('2017-12-20 11:00').fromNow()
      }
   }
}

И в вашем шаблоне:

<template>
   <div>
      {{ distanceFromNow }}
   </div>
</template>
0 голосов
/ 11 октября 2019

Вы добавили момент к объекту global Vue следующим образом:

const moment = require('vue-moment');
Vue.use(moment)

Простое добавление его в локальную область видимости компонента не сделает его доступным для использования в шаблоне,Все ссылки в шаблоне взяты из самого компонента.

...