AngularJS のプロパティ変更を購読する 質問する

AngularJS のプロパティ変更を購読する 質問する

knockoutJSでは、観察可能なviewmodel プロパティ、例:

myViewModel.personName.subscribe(function(newValue) {
    alert("The person's new name is " + newValue);
});

現在、AngularJS を学習中ですが、AngularJS にこれに相当するものがあるかどうか知りたいです。検索してみましたが、見つかりません。

ベストアンサー1

範囲$watchAngularJS のオブジェクトには、スコープ プロパティを「監視」するための特別なメソッドがあります。

これは、モデルの新しい値と古い値を受け取るコールバックを受け入れます。

$scope.$watch('modelName', function(newValue, oldValue){
    // Do anything you like here
});

コールバックは初期化時とモデルが変更されるたびに実行されます。したがって、次のように等価性の追加チェックを追加するとよいかもしれません。

$scope.$watch('modelName', function(newValue, oldValue){

    // Check if value has changes
    if(newValue === oldValue){
        return;
    }

    // Do anything you like here
});

これにより、モデルを「監視」し、必要に応じて何らかのアクションを実行できるようになります。

追加の注意: オブジェクトを含むモデルを監視している場合は、次のように、AngularJS に両方の値を参照ではなくオブジェクトの等価性で比較するように指示する追加の 3 番目のパラメーターを使用する必要があります (参照は変更されず、ウォッチャーがトリガーされないため)。

$scope.$watch('modelName', function(newValue, oldValue){
    // Do anything you like here
}, true); // Add extra 'true' parameter to check for object equality

詳しいドキュメントはAngularJS スコープページ。

お役に立てれば幸いです!

おすすめ記事