我看到许多关于身份验证的教程,它们在$ rootScope上放置了一个'auth'对象,包括来自FireBase-people的AngularFire-seed。
我认为将对象放在rootcope上是不好的做法,而应该改为创建服务。在认证方面,为什么这(显然)没问题?或者更确切地说是一个更普遍的问题:什么时候可以在根基镜上放一些东西甚至是好的做法?
举另一个例子。我还有一个用户的配置文件对象。将它添加到auth-object中也可以吗?在这种情况下,我甚至不会污染rootcope,因为auth-object已经存在了。将配置文件放在这样的rootcope上是否可以(通过auth-object)?如果没有,为什么?
我知道,这是几个问题,但它们都归结为标题中的一个问题......
答案 0 :(得分:6)
最有可能的原因是原型继承在JavaScript中的作用。
例如:客户端需要在整个应用中使用身份验证凭据,哪个地方比$rootScope
更好? (除非您希望它在服务中并在所有工件中注入该服务)。这类似于ASPECT,可以解决携带身份验证数据的交叉功能。通过在$rootScope
中添加与身份验证相关的数据,您可以轻松地从显示继承自scope
的任何$rootScope
获取身份验证详细信息(由于原型继承)。
这适用于具有隔离范围的指令不,但对于隔离范围,由于您获得了有效的双向绑定机制,因此爬墙将很小。