2016-05-04 38 views
-1

我是角度初学者,我尝试做这个教程(http://sahatyalkabov.com/create-a-tv-show-tracker-using-angularjs-nodejs-and-mongodb/

我使用John Papa的最佳实践。所以,我不使用$ scope而是一个变量。 var vm = this;我的控制器和ui路由器上的

但在本教程中,有一次他使用$ rootScope。我已经看到这是不好的做法,但有时你必须使用。

在本教程中,您有没有$ rootScope的另一种可能性,或者您没有选择?

谢谢!

回答

3

我很快检查了链接,并注意到$ rootScope用于保存currentUser属性。这种情况对服务和工厂来说更好,尽管诱惑力很强,但我尽量不要使用$ rootScope。

2

你说得对,使用$rootScope不是一个好习惯。

据我所知,在本教程中,他使用$rootScope仅用于在login上存储currentUser(并在logout上删除)。而已。

而且这种情况可以很容易地实现,根本不需要使用$rootScope。它需要更多的代码,但并不困难。

如果你还好吗写更多的代码,使你的代码,而无需使用不好的做法,那么你可以做一些事情如下:

您可以创建一个分开的服务:

angular.module('MyApp') 
     .service('UserKeeper', function($) { 
      var userKeeper = { 
       currentUser:{} 
      }; 

      return userKeeper; 
     }); 

,然后就在Auth工厂中注入此服务,并将您的用户保存在currentUser属性中,而不是将其保存在您的$rootScope中。

+0

感谢您的回答,这是完美的! –

+0

不客气!我很乐意提供帮助。 – MaKCbIMKo