我是角色的初学者,我尝试做这个教程(http://sahatyalkabov.com/create-a-tv-show-tracker-using-angularjs-nodejs-and-mongodb/)
我使用John Papa的最佳实践。所以,我不使用$ scope而是使用变量。 我的控制器和ui-router上的 var vm = this; 。
但是在本教程中,他有一次使用$ rootScope。我已经看到这是不好的做法,但有时你必须使用。
在本教程中,如果没有$ rootScope或者你没有选择,还有其他可能吗?
谢谢!
答案 0 :(得分:3)
我快速检查了链接并注意到$ rootScope用于保存currentUser属性。这种事情在服务和工厂方面都比较好,我尽量不使用$ rootScope,尽管诱惑力很强。
答案 1 :(得分:2)
你是对的,使用$rootScope
不是一个好习惯。
据我了解,在本教程中,他仅使用$rootScope
在currentUser
上存储login
(并在logout
上删除)。就是这样。
这种情况很容易实现,而根本不使用$rootScope
。它需要更多的代码,但并不是那么困难。
如果您可以编写更多代码并在不使用不良做法的情况下编写代码,那么您可以执行以下操作:
您可以创建单独的服务:
angular.module('MyApp')
.service('UserKeeper', function($) {
var userKeeper = {
currentUser:{}
};
return userKeeper;
});
然后只需在Auth
工厂中注入此服务,并将用户保存在currentUser
媒体资源中,而不是将其保存在$rootScope
。