请解释一下数据服务的使用情况与$ 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
来共享分支数据。
答案 0 :(得分:5)
如果一种方法比另一种方法更好,可能不容易说。但是,在这种情况下我会使用共享服务,因为它只是操纵相同的数据branch
(我想)。 $broadcast
和$on
更适用于应用程序的不同“独立”组件可能正在侦听事件的情况,并且每个组件在事件发生时都会有不同的响应。
答案 1 :(得分:5)
Service是一个Singleton,您可以注入任何控制器并在控制器范围内调用getter / setter服务值。
我认为通过服务,您可以更好地控制数据并使代码更清晰。