Bonjour,

Je suis entraine de suivre le tutorial sur céer un système de commentaire Voila je rencontre un petit problème avec mon code.

Ce que je fais

J'essais de récuper mes commentaire avec le sytème de Vuex.

<script type="text/babel">
  import Comment from './comments/Comment.vue'
  import CommentForm from './comments/Form.vue'
  import { comments } from 'src/store/getters'
  import { getComments } from 'src/store/actions'

    export default {
      vuex: {
      getters: { comments },
      actions: { getComments }
    },
      components: {
        Comment,
        CommentForm
      },
        props: {
            id: Number,
            model: String,
            csrf: String,
            ip: String
        },
        ready: function () {
            this.getComments(this.model, this.id)
        }
    }
</script>

Ce que je veux

c'est la fonction getComments fasse une requête ajax. J'ai mis cette function dans un fichier action,js :

import axios from 'axios'

export const getComments = function (store, model, id) {
  return axios.get('/comments', {params: {id: id, type: model}}).then((response) => {
    store.dispatch('ADD_COMMENTS', response.data)
  })
}

Ce que j'obtiens

Je ne vois pas mes commentaires et dans ma console j'ai cette erreur :

Comments.vue?7751:32Uncaught TypeError: this.getComments is not a function

J'utilise le systeme de store J'ai initier Vuex dans mon store qui est lui aussi charger dans mon min.js

Je ne comprend pas pourquoi vuejs dit que getComments n'est pas fonction

Merci de votre aide

4 réponses


Hypothèse : peut-être n'est-ce pas utile de la définir en constante ? Si ?
Pourquoi ne pas faire simplement un export de la seule fonction (comme une fonction anonyme) ? Au moins pour tester...

lakamark
Auteur

Mmm c'est une piste à envisager...

Utilise ready() {} eu lieu de ready: function () {}

En utilisant la seconde version, tu en fait une fonction anonyme, et tu n'as pas accès à this dedans.

lakamark
Auteur

J'ai essayer avec la la version ready() {}. Je n'est toujours pas acèss à la fonction this.getComments().

Et pourtant que je fai debug mes variable this.model et this.id dans la fonction ready, j'ai accès sans problème.

L'erreur dans ma console est ceci :
Uncaught TypeError: this.getComments is not a function

En plus, j'ai un gros problème de transfert de mes variables (this.model et this.id) sont mal transféré à la fonction getComments qui est dans mon script actions.js En bref, mon système fait un peut n'importe quoi... :(