Passer une closure en argument

Pour recalculer une valeur qui change avec le temps

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous !

Même si je pense pouvoir dire que je me débrouille en JavaScript, il me manque probablement des bases.

J'aimerais utiliser un plug-in jQuery pour réaliser des effets. Parmi les paramètres nécessaires (passés sous forme d'un "objet") afin que celui-ci fonctionne comme je le souhaite, il y a une valeur qui change en fonction du temps.

D'où ma question : est-ce qu'il est possible de passer une fonction anonyme qui irait récupérer cette valeur "à jour" quand l'effet est activé, à la place de transmettre une valeur scalaire qui ne sera plus valide peu de temps après ?

Pour être précis, j'aimerais utiliser bootstrap-touchspin, et c'est la valeur maximale qui varie en fonction du temps. J'ai de quoi la recalculer ou la récupérer ailleurs dans le DOM, là où elle est affichée et remise à jour.

Merci d'avance  :)

+0 -0

Si ta closure retourne la valeur, ça devrait passer. Ou alors j'ai pas pigé le truc.

[EDIT] Ah, mais le problème serait que la valeur n'est prise que lors de l'initialisation du touchspin-truc ? Bien possible.

[EDIT^2] Dans ce cas, il suffirait d'avoir un $("input").trigger("touchspin.updatesettings", {max: nouvelleValeur}); dans ta fonction temporelle.

+1 -0

[EDIT] Ah, mais le problème serait que la valeur n'est prise que lors de l'initialisation du touchspin-truc ? Bien possible.

victor

C'est exactement ça.

[EDIT^2] Dans ce cas, il suffirait d'avoir un $("input").trigger("touchspin.updatesettings", {max: nouvelleValeur}); dans ta fonction temporelle.

victor

Je n'en étais pas encore arrivé là dans ma lecture de la documentation, j'avoue  :honte:

Je ne suis pas certain d'avoir compris correctement. Actuellement j'ai ce code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$('#MyTouchspin').TouchSpin({
    max: function() {
        var value = parseFloat($('#CurrentPrice').text())
        $('#MyTouchspin').trigger(
            'touchspin.updatesettings',
            {max: value}
        );
        return value;
    },
    // …

Un essai avec trigger de l'événement

Mais actuellement, je n'ai même pas le maximum qui est pris en compte. Même si j'enlève le trigger (je n'arrive plus à trouver comment j'avais fait pour avoir une fonction anonyme qui fonctionnait…).

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte