0

そのため、コントローラーに注入されたいくつかの異なるサービスからの変更を監視するコントローラーがあります。コントローラーは現在、サービスの各スコープを継承して、そこから 1 つの値を $watch します。サービス全体のスコープをミックスにドラッグすることなく、その 1 つの値を $watch する方法を見つけたいと思っています。これが私の疑似コードです。

function controller {
    $scope.$watch(myService.value, function(newVal) {
        $scope.value = newVal;
    });

}

サービススコープを使用してコントローラーを更新しないようにする方法についての指針をいただければ幸いです。

どうもありがとう

4

1 に答える 1

0

Angular の非常に優れた機能を使用できます。Angularjs には、モジュール/サービス/ファクトリなどの間で通信するためのメッセージング システムが組み込まれています。

あなたのサービスであなたが使うことができる

$rootScope.$broadcast('value:changed', { value: newValue });

コントローラーでは、次のように変更をキャッチできます。

$scope.$on('value:changed', function(message) {
   $scope.value = message.newValue;

});

もちろん、このアプローチを使用するには、コントローラーにブロードキャストできるように、その値がいつ変更されるかを知る方法が必要です。

これが役に立てば幸いです!お知らせ下さい!

乾杯

$broadcast (および/または $emit) の詳細については、refを参照 してください。 公式ドキュメント: https://docs.angularjs.org/api/ng/type/ $rootScope.Scope

于 2014-12-24T10:08:32.627 に答える