IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Javascript et le DataBinding?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut Javascript et le DataBinding?
    C'est de nouveau moi

    Je vais peut-être demander un truc fou mais soit...
    Est-il possible de faire du DataBinding en JavaScript? Pour un peu mieux explicité ce que je veux faire, voici ce que je veux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <script type="text/javascript">
    var myVar = 'toto';
    </script>
     
    <input type="text" value="javascript:myVar;" />
    Et avec ça, je voudrai que dès que je modifie myVar, mon input prenne la nouvelle valeur (et vice versa si possible).

  2. #2
    Membre expérimenté Avatar de marts
    Inscrit en
    Février 2008
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 233
    Par défaut
    2 moyens :

    - la fonction watch, mais ce n'est pas standard (n'existe que sur Fx)
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script type="text/javascript">
    	o={myVar:'toto'}
    	o.watch('myVar',changePropertieValue);
    	function changePropertieValue(propertie,oldValue,newValue)
    	{
    		document.getElementById('aTextField').value=newValue;
    	}
    </script>
    <input id="aTextField" type="text" value="toto" />
    <input type="button" value="changer pour 'titi'" onclick="o.myVar='titi';">
    - reproduire le fonctionnement de watch
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <script type="text/javascript">
    	o={myVar:'toto'}
    	function changePropertieValue(propertie,oldValue,newValue)
    	{
    		document.getElementById('aTextField').value=newValue;
    	}
     
    	function Watcher(object,propertie,handler)
    	{
    		this.object=object;
    		this.propertie=propertie;
    		this.handler=handler;
     
    		this.oldValue=object[propertie];
    		this.timer=null;
    	}
    	Watcher.prototype.start=function(){this.timer=setInterval(run(this),1000);}
    	Watcher.prototype.stop=function() {clearInterval(this.timer);}
     
    	function run(watcher)
    	{
    		return function()
    		{
    			if (watcher.object[watcher.propertie]!=watcher.oldValue)
    			{
    				watcher.handler(watcher.propertie,watcher.oldValue,watcher.object[watcher.propertie]);
    				watcher.oldValue=watcher.object[watcher.propertie];
    			}
    		};
    	}
     
    	watcher=new Watcher(o,'myVar',changePropertieValue);
    	watcher.start();
    </script>
    <input id="aTextField" type="text" value="toto" />
    <input type="button" value="changer pour 'titi'" onclick="o.myVar='titi';">
    Le problème c'est de trouver le juste intervalle pour le timer. S'il est trop court les ressources risquent d'être monopolisées, et s'il est trop long la réactivité sera médiocre et les changements rapides et successifs risquent de passer inaperçus.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    LA première méthode est intéressante je trouve, dommage pour la limitation à Fx...

    La seconde est plus embêtante, j'avais pensé à un timer mais je trouve ça un peut violent (pour ce que je veux faire).

    Je pense qu'il doit y avoir des solutions annexes en passant par des sortes de Setter et Getter. Je vais essayer de regarder la chose mais je risque de sortir de mon projet et de perdre pas mal de temps pour 2 variables associé à 2 input

  4. #4
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Salut,

    Je ne comprends pas bien, c'est peut-être dû à la complexité de ton code, mais pourquoi ne pas simplement exécuter une fonction mettant à jour le champ texte quand myVar est susceptible d'être modifiée?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    Salut,

    Parce que c'est la solution de facilité

    Non en réalité, dans mon présent ça n'a pas un intérêt énorme, mais je suis de nature curieux. Et le DataBinding en js serait à mon avis un atout extra pour réaliser des tout un tas de choses.

    Mais au final je pense jouer sur des méthodes de modifications comme tu le proposes, avec un petit gestionnaire d'objets abonnés à la variable.

Discussions similaires

  1. Les meilleurs livres pour apprendre le JavaScript
    Par vermine dans le forum Livres
    Réponses: 23
    Dernier message: 10/06/2019, 18h58
  2. JavaScript<---->ActionScript
    Par crazypiou dans le forum Flash
    Réponses: 21
    Dernier message: 17/04/2009, 17h14
  3. Construire chemin sur bouton avec évt Javascript
    Par Ph. B. dans le forum XMLRAD
    Réponses: 4
    Dernier message: 27/05/2003, 10h26
  4. appel xmlservice via fonction javascript
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 06/05/2003, 14h24
  5. JavaScript de vérification de formulaire
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/02/2003, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo