使用$ rootScope存储对服务的引用

时间:2014-02-14 20:36:19

标签: javascript angularjs

我正在使用中型/大型应用程序,我们将当前用户数据和方法存储在服务上。因为我们需要整个应用程序的用户信息,所以将此服务附加到$rootScope一次是不是一个坏主意?

AppController

$rootScope.user = user.get();

而不是在Controller基础上添加它(在95%的控制器中):

$scope.user = user.get();

此外,是否有任何内存/性能影响?

谢谢!

1 个答案:

答案 0 :(得分:3)

如果您将其存储在$rootScope上,则可以在任何控制器中读取它而不会因原型继承而注入$rootScope,但是有人决定制作新的$scope.user在您的某个控制器中,您将失去对$rootScope上的用户属性的引用,除非您已明确注入并直接引用$rootScope。这可能会浪费某人的时间来尝试调试。

我认为约定是可以在$rootScope上存储数据,但不存储函数。我不会依赖于子范围的原型继承,除非您至少在$rootScope上创建一个模型对象,而被控制器覆盖的可能性很小,如$rootScope.globalData.user或其他东西。