-1

I'm a beginner in angular and I try to do this tutorial ( http://sahatyalkabov.com/create-a-tv-show-tracker-using-angularjs-nodejs-and-mongodb/ )

I use the best practices by John Papa. So, i don't use $scope but a variable. var vm = this; on my controller and ui-router.

But on this tutorial, at one moment, he use $rootScope. I have seen that it's bad practice but sometimes you have to use.

On this tutorial, have you another possibility without $rootScope or you haven't choice?

Thanks !

2 Answers2

3

I quickly checked the link and noted that $rootScope is used to hold the currentUser property. This kind of things are better with services and factories, I try not to use $rootScope at all, though the temptation is strong.

Anfelipe
  • 712
  • 10
  • 20
2

You're right, that using of $rootScope is not a good practice.

As I understand, in this tutorial he uses $rootScope just for storing currentUser on login (and remove on logout). That's it.

And this case could be easily implemented without using $rootScope at all. It will require a bit more code, but it's not so difficult.

If you ok to write a bit more code and make you code without using bad practices then you can do something the following:

You can create a separated service:

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

           return userKeeper;
        });

and then just inject this service in your Auth factory and save your user in currentUser property instead of saving it in your $rootScope.

MaKCbIMKo
  • 2,800
  • 1
  • 19
  • 27