Problème fonction de classe renvoie toujours la même chose

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
I_need_help_thank
Messages : 2
Enregistré le : 02 avr. 2021, 00:52

Problème fonction de classe renvoie toujours la même chose

Message par I_need_help_thank » 02 avr. 2021, 01:12

Bonjour, bonsoir ,
Voila je suis actuellement en train de faire un petit projet ou je crée dynamiquement des cocktails et tout ça :D .
J'ai actuellement mes 2 classes ingrédients et ingrédient:

Code : Tout sélectionner

export class Ingredients {

    constructor () {
        this.ingredients = [];  // list of instances of "Ingredient"
    }

    add(ingredient) {
        this.ingredients.push(new Ingredient(ingredient));
    }

    get_ingredient() {

        for(let i = 0; i <= this.ingredients.length; ++i)
        {
            return this.ingredients[i].get();
        }
    }
}

export class Ingredient {

    constructor(ingredient) {
        this.ingredient = ingredient;
    }

    get()
    {
        return this.ingredient;
    }

}
Donc voila quand je fais mon appel Ajax et que j'ajoute un ingrédient puis quand j'appelle ma fonction get_ingredient() , elle retourne toujours le premier que j'ai mis alors que quand je fais un console.log(this.ingredients) je vois qu'il y a mes 2 ingrédients.

Voila l'appel Ajax :
dans data.ingredient j'ai le nom de l'ingredient

Code : Tout sélectionner

let AjaxIngredient = ($self,liste_ingredient) => {
	let $data = $self.serialize();
	$self.hide();
	$.ajax({
		url: $self.attr("action"),
		method: $self.attr("method"),
		data: $data,
		dataType: "json",
	})
		.done(function (data) {
			if (data.hasOwnProperty("result")) {
				if (data.result) {
				
					//recuperer data.ingredient
					
					liste_ingredient.add(data.ingredient);
					console.log(liste_ingredient.get_ingredient());


				$("#message_formulaire").empty().append("<p style='color: green'>"+data.message+"</p>").fadeIn(1000);
				}else {
					$self.fadeIn(2000);
					if (data.hasOwnProperty("message")) {
						/* display message */
						$("#message_formulaire").empty().append("<p style='color: red' >"+data.message+"</p>").fadeIn(1000);
					}
				}

			}
		})
		.fail(function () {});
	return false;
}
j'ai également une autre question, j'ai mon instance de Ingredients (liste_ingredient qui est passé en parametre) parce qu'en gros je la crée des que la personne arrive sur la page puis je la passe dans 5 fonctions pour arriver a l'appel Ajax ça m'a pas l'air ouf :?: . Du coup je ne vois pas comment faire autrement :/ j'ai ça en gros :

Connexion
liste_ingredient = new Ingredients();
Appel fonction1(liste_ingredient);

fonction1(
appel fonction2(liste_ingredient)
);

fonction2(
appel fonction3.....

jusqu'à l'appel Ajax vu que c'est que des fonctions imbriquées.


Bon voila j'ai fait un beau pavé xD J'espère surtout avoir été clair :)
Merci beaucoup a tout ceux qui prendront le temps de me répondre <3

Avatar du membre
webmaster
Administrateur du site
Messages : 562
Enregistré le : 28 févr. 2017, 15:19

Re: Problème fonction de classe renvoie toujours la même chose

Message par webmaster » 02 avr. 2021, 09:29

Bonjour,

Le fonctionnement décrit est logique
La boucle suivante s'arrete au premier élément trouvé dès qu'il y a un return

Code : Tout sélectionner

        for(let i = 0; i <= this.ingredients.length; ++i)
        {
            return this.ingredients[i].get();
        }
Il faut retourner le tableau complet et faire la boucle au moment de l'affichage
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

I_need_help_thank
Messages : 2
Enregistré le : 02 avr. 2021, 00:52

Re: Problème fonction de classe renvoie toujours la même chose

Message par I_need_help_thank » 02 avr. 2021, 11:21

C'est ça le soucis quand je veux bosser tard xD j'arrive plus a réfléchir :oops: :oops: :oops: :roll:
Anyways merci beaucoup. :)

superedan
Messages : 1
Enregistré le : 25 nov. 2023, 03:16

Re: Problème fonction de classe renvoie toujours la même chose

Message par superedan » 25 nov. 2023, 03:18

Assurez-vous que la fonction n'utilise pas uniquement des variables de classe constantes. Si les valeurs sont définies de manière constante dans la classe et ne changent jamais, la fonction renverra toujours la même chose.
Watermelon Game

bekean23
Messages : 5
Enregistré le : 25 juil. 2023, 03:54

Re: Problème fonction de classe renvoie toujours la même chose

Message par bekean23 » 13 déc. 2023, 05:59

La sezione dei commenti testimonia l'impatto che questo articolo ha avuto sulle persone, innescando discussioni e riflessioni ponderate.
heardle

Répondre