2017-06-06 1 views
0

Le code suivant est utilisé pour mapper un événement avec un objet:valeur de l'événement ne cesse de changer quand un objet égal à l'événement est modifié

//shortened the function for better visibility 
moveToolbar.on("graphic-move-stop", function (evt) { 
    oldGraphicMove = evt.graphic;   
    oldGraphicMove.geometry.rings[0][0] = 42173; 
    newGraphicMove = evt.graphic; 
}); 

Cependant lors du changement de la valeur de oldGraphicMove la valeur de l'événement est changeant également pour l'imiter même si aucun changement n'est apporté à l'événement lui-même. Est-il un moyen d'empêcher cela?

Répondre

0

Le problème est que oldGraphicMove pointe sur le même objet que evt.graphic. Vous devez faire une copie de evt.graphic.

oldGraphicMove = JSON.parse(JSON.stringify(evt.graphic)); devrait faire l'affaire.

+0

Cela a fonctionné très bien merci! – Maeglin77

0

Les objets sont transmis par référence. pour le passer en valeur vous pouvez utiliser la fonction anonyme ou vous devez cloner l'objet

//shortened the function for better visibility 
moveToolbar.on("graphic-move-stop", function (evt) { 
    oldGraphicMove = (function(x){ 
    var obj = Object.create(x); 
    obj.geometry.rings[0][0] = 42173; 
    return obj; 
    })(evt.graphic); 
    newGraphicMove = evt.graphic; 
});