Page 1 sur 1

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

Posté : 02 avr. 2021, 01:12
par I_need_help_thank
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

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

Posté : 02 avr. 2021, 09:29
par webmaster
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

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

Posté : 02 avr. 2021, 11:21
par I_need_help_thank
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. :)

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

Posté : 25 nov. 2023, 03:18
par superedan
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

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

Posté : 13 déc. 2023, 05:59
par bekean23
La sezione dei commenti testimonia l'impatto che questo articolo ha avuto sulle persone, innescando discussioni e riflessioni ponderate.
heardle