Maison  >  Questions et réponses  >  le corps du texte

La méthode Vuejs ajax appelle d'autres méthodes sur le composant

Comment appeler une autre méthode en jquery ajax ?

methods : {
    calert(type,msg="",error=""){
        console.log("call me");
    },
    getData(){
        $.ajax({
            type: "GET",
            success: function(data){
                // error calert not found
                calert(true,"","asd");
            },
            error: function (error) {
                // also error calert not found
                this.calert(false,"",error);
            },
            complete: function(){
            },
            url: "/test",
        });
    },
}

J'ai essayé d'utiliser this.calert mais ça ne marche pas, toujours l'erreur

P粉316423089P粉316423089241 Il y a quelques jours424

répondre à tous(2)je répondrai

  • P粉281089485

    P粉2810894852024-02-22 11:46:37

    Au fait, j'ai trouvé la solution, ça a l'air un peu délicat à utiliser

    methods : {
        calert(type,msg="",error=""){
            console.log("call me");
        },
        getData(){
            let vm = this;
            $.ajax({
                type: "GET",
                success: function(data){
                    // error calert not found
                    vm.calert(true,"","asd");
                },
                error: function (error) {
                    // also error calert not found
                    vm.calert(false,"",error);
                },
                complete: function(){
                },
                url: "/test",
            });
        },
    }

    Je stocke this dans une variable, puis j'utilise cette variable pour appeler d'autres méthodes.

    Quelqu'un a-t-il une meilleure solution que celle-ci ?

    Merci

    répondre
    0
  • P粉491421413

    P粉4914214132024-02-22 11:36:54

    Il vous suffit de mettre à jour votre code pour utiliser les fonctions fléchées comme suit :

    methods : {
        calert(type,msg="",error=""){
            console.log("call me");
        },
        getData(){
            $.ajax({
                type: "GET",
                success: (data) => {
                    this.calert(true,"","asd");
                },
                error: (error) => {
                    this.calert(false,"",error);
                },
                complete: (){
                },
                url: "/test",
            });
        },
    }

    Vous pouvez également stocker une référence locale à la méthode, par exemple :

    methods : {
        calert(type,msg="",error=""){
            console.log("call me");
        },
        getData(){
            const { calert } = this;
    
            $.ajax({
                type: "GET",
                success: function(data){
                    // error calert not found
                    calert(true,"","asd");
                },
                error: function (error) {
                    // also error calert not found
                    calert(false,"",error);
                },
                complete: function(){
                },
                url: "/test",
            });
        },
    }

    répondre
    0
  • Annulerrépondre