私のコンテクストの外でエラーを複製するのに最善を尽くしましたが失敗しましたので、それを提供する必要があります。Javascriptオブジェクトで予期しないスコープの振る舞い
コード:
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
}
})
これは、ESRIのJavascriptの4.3 APIを使用しているが、APIではないようですが、スコープはJavascriptでどのように機能するかについて私の部分の一部misuderstanding。
あなたは私だけview
が完全にロードされている場合、それはまだ私が何をしないのです古い、完全にロードされていないオブジェクトに
を参照widget.close
を呼び出していても、見ることができるように?
をあなたが起こっている正確に何を説明します。それはロードされません*まだ*。 – Bergi
'widget.view = this'を置き換えてもうまく動作しますか? 'widget.view = view;'で? – CaptEmulation
"then"が呼び出されているとロードされていることを意味します。 – Mojimi