状态管理与在AngularJS中使用$ rootScope有什么区别(从技术上来说)?

时间:2018-07-10 10:17:58

标签: angularjs flux rootscope state-management

我经常使用AngularJS,并且经常读到“不要过度使用$ rootScope,这是一个坏习惯”。

然后,当React提出Flux模式时,所有数据都集中在一个中心位置,这让我在$ rootScope上记忆犹新。

如果我将$ rootScope对象用作事实的单一来源,那么与Flux等其他方法有什么区别?

我的意思是,您也可以只使用$ rootScope来组织数据,例如$ rootScope.loggedInUser,$ rootScope.userList等。而且,您可以提供将对$ rootScope进行所有更改的服务,以便在发生某些情况时知道在哪里查看。

如果有人可以解释为什么这不是一个好主意(或者告诉我,这基本上没问题,我是开放的):)

编辑:相关问题不能回答有关$ rootScope和Flux模式差异的问题。

1 个答案:

答案 0 :(得分:0)

  

为什么过度使用$rootScope是一个不好的做法?

您提供的示例最好存储在servicefactory内。

这样,您可以组织所有数据并在需要时注入正确的数据。

通过将这些属性存储在$rootScope中,您最终会得到一个包含各种数据的巨大对象。如果项目变大,将很难维护。

如果正确设计应用程序,则甚至不需要$rootScope

您当然可以将所有内容存储在$rootScope内,但是您自己创建它,并且您的同事很难维护该应用程序。并且请注意,$rootScope处设置的每个变量都可以通过原型继承供控制器$scope使用。

enter image description here

上图是console.log($scope)。如您所见,$rootScope数据也可以从那里获得。

$rootScope中存储简单的内容有时很方便。但是我不知道我将分配给$rootScope什么样的东西。最好将其存储在services中。