2016-04-25 20 views
0

サイドバーの指令を作成したい。 サイドバーを切り替える機能がコントローラにあります。コントローラからの角度指令関数

アプリケーションの他のコントローラからこの機能にアクセスするにはどうすればよいですか?

ありがとうございます!

答えて

1

アプリケーション全体からサイドバーを操作したい場合は、おそらくサービス内のサイドバーの状態を保存する方が良いでしょう。このサービスにアクセスするには、そのサービスにアクセスする必要があります。また、関連するServiceの値を変更することでSideBarの状態を変更できます(サービスは常にSingletonパターンのようにインスタンスが1つしかないため可能です)。

したがって、現在のケースの基本的な通信パターンを示す画像を添付します。

Controllers communication via service

我々は国家サービスにactive変数の状態を変更する場合は、すべての3つのコントローラがサービスの同じインスタンスにリンクされているので、サイドバーの指令は、影響を受けることになります。

ここでControllers service communicationは、サービスを介したコントローラ間の通信の小さな例です。

希望すれば、お手伝いします!

1

Iは

Its'notはコントローラ内部の任意のUIロジックを使用するようにお奨めサイドバーをトグルコントローラ内の機能を有します。 Angularの世界では、これらのことは軽蔑的なHTMLを使用することで実現できます。

<a ng-click="isReplyFormOpen = !isReplyFormOpen">Reply</a> 
    <div ng-show="isReplyFormOpen" id="replyForm"></div> 

あなたの質問に答えるには:あなたの機能を含むサービスを定義することができます。

あなたが望む任意のコントローラにサービスを注入するよりです。

(function(){ 
    angular.module('YourApp') 
    .controller('ControllerName',['ToggleBar',function(ToggleBar){ 
     //Call the service func... 
     ToggleBar.toggle(); 
    }]); 
)(); 
関連する問題