我经常使用AngularJS,并且经常读到“不要过度使用$ rootScope,这是一个坏习惯”。
然后,当React提出Flux模式时,所有数据都集中在一个中心位置,这让我在$ rootScope上记忆犹新。
如果我将$ rootScope对象用作事实的单一来源,那么与Flux等其他方法有什么区别?
我的意思是,您也可以只使用$ rootScope来组织数据,例如$ rootScope.loggedInUser,$ rootScope.userList等。而且,您可以提供将对$ rootScope进行所有更改的服务,以便在发生某些情况时知道在哪里查看。
如果有人可以解释为什么这不是一个好主意(或者告诉我,这基本上没问题,我是开放的):)
编辑:相关问题不能回答有关$ rootScope和Flux模式差异的问题。
答案 0 :(得分:0)
为什么过度使用
$rootScope
是一个不好的做法?
您提供的示例最好存储在service
或factory
内。
这样,您可以组织所有数据并在需要时注入正确的数据。
通过将这些属性存储在$rootScope
中,您最终会得到一个包含各种数据的巨大对象。如果项目变大,将很难维护。
如果正确设计应用程序,则甚至不需要$rootScope
。
您当然可以将所有内容存储在$rootScope
内,但是您自己创建它,并且您的同事很难维护该应用程序。并且请注意,$rootScope
处设置的每个变量都可以通过原型继承供控制器$scope
使用。
上图是console.log($scope)
。如您所见,$rootScope
数据也可以从那里获得。
在$rootScope
中存储简单的内容有时很方便。但是我不知道我将分配给$rootScope
什么样的东西。最好将其存储在services
中。