コントローラーの外で私の角度コントローラーのスコープにアクセスしようとしています。私は特定のアクションを実行し、完了時に特定のコールバックを実行する外部jsライブラリを使用しています。コールバックの1つで、angular.element(document.findElementById('elementId').scope()
はundefined
を返します。 しかし、最初のコールバック後に実行される2番目のコールバックでは、 angular.element(document.findElementById('elementId').scope()
が有効なスコープを返します。ここangular.element(..)。scope()は最初は未定義を返します
いくつかのサンプルコード
<body id="authcontroller" ng-controller="AuthenticationController as auth">
<script>
window.externalLibObj = {
onCallback1: function(){
// Undefined value for scope
var scope = angular.element(document.getElementById('authcontroller')).scope();
},
onCallback2(): function(){
// Valid value for scope
var scope = angular.element(document.getElementById('authcontroller')).scope();
}
};
</script>
</body>
これらのコールバックが実行される順序はonCallback1
、次いでonCallback2
あるれます。 var scope
はonCallback1
に定義されていないが、onCallback2
の値がなぜscope
はonCallback1
に定義されていましたか?
ありがとうございました
は、あなたがこれらのコールバックを呼び出しているコードを表示することができます支援を期待
:あなたのAuthenticationControllerで
はこれを追加しますか? –
@PeterLaBancaこれらのコールバックを呼び出すコードは、jsライブラリがロードされると自動的に実行されます。これらのコールバックを呼び出すコードは明示的に呼び出しません。 –
両方のコールバックは即座に実行されますか? 2番目のコールバックが呼び出されるまでスコープが準備できていないタイミング問題のように聞こえるだけです。 –