2017-08-03 3 views
0

Ich habe eine Komponente geschrieben. Zu Beginn ist die Bewegung von zwei Objekten (Schublade und Infusionsbesteck) synchron. Nach dem Klick auf Infusionsbesteck sollte die Bewegung der Schublade unabhängig sein. Das Infusionsbesteck bewegt sich nicht mehr. Das Ergebnis des Codes ist nun: Nach dem Klick auf Infusionstuch muss der Code unter der Bedingung "if (data.moveWithInfusion === true)" noch ausgeführt werden. Und der Code unter "if (data.moveWithInfusion === false)" läuft auch. Ich kann den Grund nicht finden. Kennt jemand den Grund? Vielen Dank! https://glitch.com/edit/#!/skill-labAframe: Änderung att zu aktualisieren

AFRAME.registerComponent('drawerwithinfusioncutlery',{ 

    schema: { 
    open : {default: '1.8 0 0.1'}, 
    close : {default: '0 0 0.1'}, 
    dur : {default: 300}, 
    moveWithInfusion :{default: true}, 
    }, 

    update: function(){ 
    var data= this.data; 
    var el=this.el; 
    var closed=true; 
    var infusion=document.querySelector("#infusioninpack"); 

    el.addEventListener("click",function(){ 
     if(data.moveWithInfusion===true){ 
     alert("true"); 
     if(closed === true){ 
      open(el, data.close, data.open, data.dur); 
      open(infusion, '1.24 4.439 1.555', '3.04 4.439 1.555', data.dur); 
      closed=false; 
     }else if(closed===false){ 
      open(el, data.open, data.close, data.dur); 
      open(infusion, '3.04 4.439 1.555', '1.24 4.439 1.555', data.dur); 
      closed=true; 
     } 
     }else if(data.moveWithInfusion===false){ 
     alert("false"); 
     if(closed === true){ 
      open(el, data.close, data.open, data.dur); 
      closed=false; 
     }else if(closed===false){ 
      open(el, data.open, data.close, data.dur); 
      closed=true; 
     } 
     } 
    }); 

    infusion.addEventListener("click",function(){ 
     el.setAttribute('drawerwithinfusioncutlery', {moveWithInfusion: 'false'}) 
    }); 

    } 
}); 

Antwort

0

Zunächst einmal sollte der Ereignis-Listener in der init Funktion sein, zu verhindern, dass sie zu duplizieren.

Also habe ich den "Klick" Listener auf die init Funktion ausgeworfen. Und ich habe das ‚geschlossene‘ Variable in den init hinzugefügt, wie es in dem labda Funktion des Zuhörers verwendet wird, und jetzt scheint es richtig zu funktionieren:

https://glitch.com/edit/#!/gigantic-toucan?path=public/js/drawerwithinfusioncutlery.js:26:25

+0

Thank you very much. Mein Ziel ist es, die Schublade ohne die Bewegung von Infusescutlery nach einem Klick auf Infusionsbesteck zu bewegen. Ich löse das Problem mit deinem Vorschlag. Vielen Dank. –