AngularJS:从任何控制器访问对象

时间:2015-07-24 23:33:45

标签: angularjs angularjs-service angularjs-factory

存储"用户"的最佳方式是什么?可以在Angular应用程序中的所有控制器上访问的对象吗?

我还有一个功能,取得&设置用户。

选项1:$ rootScope

起初我只是设置$rootScope.user = myUser。然后在每个控件中我都可以使用$ rootScope。这很好,直到我结束了很多重复的代码,因为我必须检查它是否存在于每个控制器的开头。

// At the start of each controller

if (!$rootScope.user) {
  // fetch and set user
} 

选项2:角度服务?

选项3:Angular工厂?

参考文献: angular.service vs angular.factory

2 个答案:

答案 0 :(得分:0)

我会在服务上使用工厂,或者使用$ rootScope。

正如Ed在下面指出的那样,服务和工厂都是单身人士。

$ rootScope,顾名思义是angularjs应用程序中所有作用域的根。

以下是供参考的内容:http://ilikekillnerds.com/2014/12/angularjs-service-vs-factory/

答案 1 :(得分:0)

如果您正在创建SPA而没有创建没有父级的范围,那么使用rootScope它将像魅力一样工作。