2016-04-25 43 views

回答

1

如果你想從你的整個應用程序中操作你的SideBar,這可能是更好的方式來保存服務中的SideBar狀態。因此,無論何時注入此服務,您都可以訪問此服務,並且可以通過更改此相關服務值來更改SideBar的狀態(這可能是因爲服務始終只有一個實例,例如Singleton模式)。

因此,我將附上圖像,它將顯示當前情況的基本通信模式。

Controllers communication via service

如果我們將改變國家服務active變量的狀態,側邊欄指令會受到影響,因爲所有三個控制器連接到相同的服務實例。

這裏Controllers service communication是通過服務在控制器之間進行通信的一個小例子。

希望它能幫助你!

1

我有功能在於切換邊欄

Its'not recomended使用內部控制器的任何UI邏輯控制器。在Angular的世界裏,這些東西可以通過使用淡入淡出的HTML來實現。

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

要回答你的問題:你可以定義一個包含你的功能的服務。

(function(){ 
    angular.module('YourApp') 
    .factory('ToggleBar', function(){ 
     function anyFunc(){ 
     //Logic here... 
     } 

     return{ 
     toggle: anyFunc 
     }; 
    }); 
)(); 

比將服務注入任何你想要的控制器。

(function(){ 
    angular.module('YourApp') 
    .controller('ControllerName',['ToggleBar',function(ToggleBar){ 
     //Call the service func... 
     ToggleBar.toggle(); 
    }]); 
)();