angularJsではグローバル変数を見ることができますか?AngularJsウォッチウィンドウ変数
私は、レガシーコードからwindow.test変数を設定しました。その変数が存在するかどうかを知るために、その変数を監視する必要があります。
私はやや
$window.$watch("test" , function(n,o){
//some code here...
}
angularJsではグローバル変数を見ることができますか?AngularJsウォッチウィンドウ変数
私は、レガシーコードからwindow.test変数を設定しました。その変数が存在するかどうかを知るために、その変数を監視する必要があります。
私はやや
$window.$watch("test" , function(n,o){
//some code here...
}
のようなものを試してみました。あなたは、可能ならば角度$window
service(直接window
にアクセスするよりも、ドキュメントで説明したように、より安全である):
app.controller('myCtrl', function ($scope,$window) {...}
をそして、そのようなあなたの$watch
に最初のパラメータとしてウォッチ機能を使用します。
$scope.$watch(
function() {
return $window.test
}, function(n,o){
console.log("changed ",n);
}
);
しかし、何かが$ダイジェストを行うことがアンギュラトリガするまで$watch
が実行されないことに注意してください。 1つの可能な方法は、レガシーコードをにラップするか、レガシーコードがエクスプレッションになったら$digest
をトリガーすることです。ここにいくつかの良いdocumentation on thisがあります。
基本的に、角度の外で変更が発生したとき(たとえば、jQueryが変更を引き起こすときによくある問題です)、何かが変更されたかどうかをAngularに伝えなければなりません。 Angularが妥当なパフォーマンスを維持する方法の1つです。
レガシーコードのように角度の範囲外で変更された場合、これは機能しますか? – TheSharpieOne
更新されました。 – KayakDave
もう1つ注目すべきことは、$ window.testの値自体が変更された場合、プリミティブ型(数値、文字列、日付、ブール値など)の値が変更された場合、またはオブジェクト参照が変更された場合にのみ発生する点です。 $ window.testのプロパティが変更された場合にトリガしたい場合は、$ watch()の3番目のパラメータとして 'true'を渡す必要があります。これにより、angleは等価ではなくプロパティをチェックします。 –