2017-01-27 16 views
0

角度1.5.8 私は2つのコントローラを持っていて、他のコントローラが最初のコントローラの結果をどのように見つけ出すのか理解できます。マウスダウンオンAngularJS 1.5 2台のコントローラがサービス経由でデータを渡す

最初のコントローラ

、私はサービス

$scope.mouseUpEvent = function() { 

      customService.mycustom(); 
} 

サービス

app.service('customService', function(){ 
this.mycustom = function(){ 
     var cvar = avar + bvar; 
     return $scope.cvar; 
    } 
    } 

その他のcontroler *に私のためにいくつかのデータを収集する機能を実行します

$scope.gridCustom = customService.var; 

他のコントローラからcvarにアクセスするにはどうすればよいですか?

私の最初のコントローラーが、自分の2番目のコントローラーよりも選択されたコンテンツを計算して、自分のサービスから選択したコンテンツを読み取り、カスタムコンテンツの操作を行う関数を呼び出すことを望みます。

私はサービスに戻りメソッドを設定しようとしましたが、メソッドに結果を格納して時計を設定する方法がまだ分かりません。

サービス

app.service('customService', function(){ 
return{ 
     mycustom : function(){ 
      var cvar = avar + bvar; 
      return $scope.cvar; 
     } 
    } 
    } 
+1

サービスで、それを返すメソッドがあります。そして、 '$ scope 'は本当にサービスに触れるべきではありません。 – GillesC

+0

範囲を見ていただきありがとうございますが、どのようにmenthodを作成しますか? Gilles私はサービスを始めたばかりなので、あまり知らない。 –

+0

サービスに最初のコントローラが設定した値を返すメソッドをサービスに追加します。 2番目のコントローラは、返された値を '$ watch 'してスコープに代入する必要があります。 –

答えて

1

そのあなたがメソッドを使用してcontroller1にアクセスするのと同じ方法で、

$scope.gridCustom = customService.mycustom(); 

あなたのサービスがあるべき、

app.service('customService', function(){ 
this.mycustom = function(){ 
     var cvar = avar + bvar; 
     return cvar; 
    } 
    } 
+0

私はそれを実行するよりも、関数を再び実行します。私はちょうどcvarの結果が欲しい。 –

+0

@ChrisTarasovsおい!それは関数を返さず、cvarの値を返します。 – Sajeetharan

+0

はい私は理解しますが、私の関数でアルゴリズムを実行しますが、私はそれを望んでいません。私はコントローラが私のためにやった車の結果がほしいと思う。 コントローラ2は出力を取り、出力を使用してデータを操作する必要があります –

0

あなたが考えることができるサービス基本的にはデータベースです。 1つのコントローラーを介してvairablesを設定し、もう一方のコントローラーを使用してそれをフェッチします。 時計は使用できますが、時計は遅いです。それは基本的に1秒ごとに行って、変更を探しています。

$scope.mouseUpEvent = function() { 
    //You called your function and stored in the service the result 
    customService.result = $scope.mycustom(); 
} 
// you function 
$scope.mycustom = function(){ 
     var cvar = 4 + 6; 
     return cvar; 
} 

サービス

app.service('customService', function(){ 
    return{ 
     // you set you result to empty at first, and first controller will insert the result 
     result : '' 

    } 
    }); 

コントローラー2:私の場合は

私はサービス内の関数を格納する必要があり、私は、コントローラ1から始めて、コントローラ

に保存することができます

//Now lets fetch the result 

console.log(customService.result); 

各コントローラでサービスを指定する必要があることを忘れないでください。各サービスの角度リレーとして機能します。 Angularは、要求したデータ/サービスのみを収集します。

関連する問題