$ rootScope是Toast Notifications的好主意吗?

时间:2014-09-11 16:20:31

标签: angularjs rest service

我正在计划我的应用程序并运行Angular中的开发主体的问题。我有一个与API后端通信的应用程序,它将根据REST API原则返回消息。

以下是我正在使用的示例服务的片段:

this.POST = function(url, data) {
        console.log(data);
        $http({
            url: url,
            method: 'POST',
            data: data,
            headers: headers
        }).
        success(function(data) {
            $rootScope.toasted = data;
        }).
        error(function() {
            $rootScope.toasted = 'There was an API communication error.';
        });
    };

现在,屏幕顶部的一个div(Toast Notification本身)将根据每个API函数(GET,POST,PUT,DELETE)的这些成功或错误状态进行更新。我正在使用$rootScope来做这件事,但我觉得这样做更安全,更好。

我应该坚持$rootScope以便我可以随时在我的应用中更新Toast通知吗?或者我应该根本不用云$rootScope并以某种方式使用控制器或其他服务来执行此功能?

1 个答案:

答案 0 :(得分:2)

最好将您的应用程序的所有部分视为与他人相关联的孤立地点。

使用$rootScope的问题在于它会强制这些属性进入可能不关心它的子范围。您正在与要拥有它的范围共享数据,但您也与不需要它的范围共享数据。使用$rootScope与声明全局变量相似,并且适用相同的原则。

共享数据通常通过任何相关组件可以通过注入服务来选择加入的服务来完成。根据具体情况,广播或发布活动也可能是适当的。

听起来我觉得有三个组成部分:

  • 数据(对象或数组)
  • 操纵数据的服务
  • 将数据绑定到UI的控制器

数据可能位于自己的服务中,也可能位于处理数据的同一服务中。如果没有详细说明,我不能说哪个最干净。当服务执行了一项操作时,它可以$broadcast $rootScope上的一个事件,控制器可以通过$scope.$on选择加入该事件,它可以从事件中访问数据,或者通过数据服务。