2013-11-04 36 views
3

您能否介紹一下數據服務的使用用途與使用$ rootScope事件的關係。

我有一個提供編輯功能的分支的列表。在編輯按鈕的點擊我播放事件使用

$rootScope.$broadcast('EditBranch', branchID); 

EditBranch事件根範圍由編輯捕獲/創建控制器,獲取分支細節,使得它在適當的編輯格式。

其他功能是我添加一個新的分支,我希望它被列入現有的分支列表中,只要它被添加。使用的代碼如下

$rootScope.$broadcast('AddBranch', branchData); //in create controller 

$scope.$on('AddBranch', function(e, branchData){ //in listing controller 
    $scope.branches.push(branchData); 
}); 

以這種方式使用$ rootScope是否正確。或者我應該創建一個shredService以在創建後共享分支數據。

回答

4

如果一種方法比另一種方法更好,可能並不容易。然而,在這種情況下,我會使用共享服務,因爲它全部是關於操縱相同的數據,我想是branch$broadcast$on更適合您的應用程序的不同「獨立」組件可能正在偵聽事件並且這些組件在事件發生時可能以不同方式響應的情況。

4

Service是一個Singleton,您可以注入任何控制器並在控制器的作用域中調用getter/setter服務值。

我認爲,通過服務,您可以更好地控制數據,並且可以使代碼清晰。

+0

我認爲服務是更好的選擇,它也允許用相關的控制器,指令將邏輯封裝到模塊(分支)中,然後將它注入任何控制器(@MaximShoustin) – pdorgambide