I need to use a global variable (user context, available from all the code) I have read some posts regarding this topic but I do not have a clear answer.
App = Ember.Application.create({
LOG_TRANSITIONS: true,
currentUser: null
});
- Is it a good practice to set the currentUser global variable in the App object ?
- How to update and access the currentUser property from all the controllers used in the app ?
No, this is not a good practice. You should avoid using global variables. The framework does a lot to make this possible - if you find yourself thinking a global variable is the best solution it's a sign that something should be refactored. In most cases the right place is in a controller. For example, currentUser could be:
Use the
needs
property. Let's say you've declared currentUser as a property of ApplicationController. It can be accessed from PostsController like this:If you need to access currentUser from a view/template, just use
needs
to make it accessible via the local controller. And if you need it from a route, use the route's controllerFor method.