AngularJSアプリケーションに監視機能があります。
$scope.$watch('quartzCrystal', function () {
...
}
ただし、ある条件(私の例では、単一ページのアプリケーションでページを変更する)の後、そのウォッチを停止したい(タイムアウトをクリアするように)。
どうやってやるの?
AngularJSアプリケーションに監視機能があります。
$scope.$watch('quartzCrystal', function () {
...
}
ただし、ある条件(私の例では、単一ページのアプリケーションでページを変更する)の後、そのウォッチを停止したい(タイムアウトをクリアするように)。
どうやってやるの?
回答:
$watch
登録解除関数を返します。これを呼び出すと、の登録が解除されます$watcher
。
var listener = $scope.$watch("quartz", function () {});
// ...
listener(); // Would clear the watch
scope。$ watchは、呼び出し可能な関数を返します。これにより、時計の登録が解除されます。
何かのようなもの:
var unbindWatch = $scope.$watch("myvariable", function() {
//...
});
setTimeout(function() {
unbindWatch();
}, 1000);
何かが発生した直後に時計をクリアしたい場合は、コールバック内の時計をクリアすることもできます。これにより、$ watchは使用されるまでアクティブのままになります。
そのようです...
var clearWatch = $scope.$watch('quartzCrystal', function( crystal ){
if( isQuartz( crystal )){
// do something special and then stop watching!
clearWatch();
}else{
// maybe do something special but keep watching!
}
}
理想的には、スコープを離れるときは、すべてのカスタムウォッチを削除する必要があります。
メモリ管理とアプリのパフォーマンスの向上に役立ちます。
// call to $watch will return a de-register function
var listener = $scope.$watch(someVariableToWatch, function(....));
$scope.$on('$destroy', function() {
listener(); // call the de-register function on scope destroy
});
ウォッチャーのコピーを破棄するには、これを使用できます。
watchers = void 0;
$on('$destroy')
)すべてのリスナーを登録解除するのが良い方法であるか、それともAngularJSがそれらを処理するかを知っていますか?ありがとう!