J'ai essayé de mon mieux de reproduire l'erreur en dehors de mon contexte, mais j'ai échoué, donc je vais devoir fournir avec elle.Comportement de portée inattendue dans les objets Javascript
code:
var view;
widget = {
activated: false,
close: function(){
this.view.popupManager.enabled = false;
}
}
view = new MapView({
}).then(function(){ //then is triggered when fully loaded;
console.log(this.popupManager) //Object!
widget.activated = true;
widget.view = this;
}
console.log(view.popupManager) //Undefined, not loaded yet
$('#my_button').click(function(){
if(widget.activated){
widget.close() //this.view.popupManager is undefined
}
})
Cela utilise l'API Javascript 4.3 Esri, mais il ne semble pas être l'API, mais certains misuderstanding de ma part sur la façon dont fonctionne la portée en Javascript.
Comme vous pouvez le voir, même si je ne convoquent que widget.close
si view
est complètement chargé, il référençant encore l'ancien, et non objet complètement chargé
Qu'est-ce que je manque?
Vous décrivez exactement ce qui se passe: Ce n'est pas chargé *encore*. – Bergi
Cela fonctionne-t-il mieux si vous remplacez 'widget.view = this'; avec 'widget.view = view;'? – CaptEmulation
@Bergi si "then" est appelé cela signifie qu'il est chargé – Mojimi