AngularJS数据服务与$ rootScope事件

时间:2013-11-04 11:02:36

标签: javascript angularjs angularjs-scope rootscope

请解释一下数据服务的使用情况与$ 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来共享分支数据。

2 个答案:

答案 0 :(得分:5)

如果一种方法比另一种方法更好,可能不容易说。但是,在这种情况下我会使用共享服务,因为它只是操纵相同的数据branch(我想)。 $broadcast$on更适用于应用程序的不同“独立”组件可能正在侦听事件的情况,并且每个组件在事件发生时都会有不同的响应。

答案 1 :(得分:5)

Service是一个Singleton,您可以注入任何控制器并在控制器范围内调用getter / setter服务值。

我认为通过服务,您可以更好地控制数据并使代码更清晰。