Vue.js、Buefy、firebaseを使いwebアプリを作成しております。
フォームに入力した情報をボタンをクリックして@clickイベントを実行しpublishを実行しています。
その際、
TypeError:formatDate is not a function
[Vue warn]: Error in v-on handler: "TypeError: formatDate is not a function"
found in
---> <BButton>
<Create> at src/views/Create.vue
<App> at src/App.vue
<Root>
というエラーが出てしまいます。
恐らくショボいミスなのでしょうが、ご享受お願いします。
Home.vue
Vue
1<template> 2 <div class="home"> 3 <h2 class="title is-3">taitoru</h2> 4 <hr> 5 <Item class="item" v-for="post in posts" :key="post.id" :post="post"></Item> 6 </div> 7 8</template> 9 10<script> 11import Item from '@/components/Item' 12import { db } from '@/main' 13 14export default { 15 name: 'Home', 16 components: { 17 Item 18 }, 19 data() { 20 return { 21 posts: [] 22 } 23 }, 24 firestore() { 25 return { 26 posts: db.collection('posts') 27 } 28 } 29} 30</script> 31
Item.Vue
Vue
1<template> 2 <article class="message"> 3 <div class="message-header"> 4 <h2>{{ post.title }}</h2> 5 </div> 6 7 <div class="content"> 8 <figure class="image is-10x10"> 9 <div class="is-rounded" :style=" 'background-image: url(' + user.photoURL + ')' "></div> 10 </figure> 11 <p>{{ user.displayName }}</p> 12 <div class="createAt"> 13 <p>{{ post.createdAt }}</p> 14 </div> 15 </div> 16 </div> 17 18 19 </article> 20</template> 21 22<script> 23import { db } from '@/main' 24export default { 25 props: ['post'], 26 data() { 27 return { 28 user: {} 29 } 30 }, 31 firestore() { 32 return { 33 user: db.collection('users').doc(this.$props.post.uid) 34 } 35 } 36} 37</script> 38
<template> 中略 <b-button type="is-primary" @click="publish" expanded>投稿する</b-button> 中略 </template> <script> import firebase from 'firebase'; import { auth } from '@/main' import { db } from '@/main' export default { data() { return { title: '', tags: [], content: '', tag: '', currentUser: {} } }, created() { auth.onAuthStateChanged(user => { this.currentUser = user }) }, methods: { addTag() { this.tags.push(this.tag), this.tag = '' }, removeTag(idx) { this.tags.splice(idx,1) }, publish() { const date = this.$date(new Date(), "dd MMMM, yyyy") db.collection('posts').add({ title: this.title, tags: this.tags, content: this.content, createdAt: date, uid: this.currentUser.uid }) .then((post) => this.$router.push('/post/' + this.post.uid + '/' + this.post.id), alert('The post got published!') ) } } } </script>