It would work if you changed it in the link function params as well (I think). However, I believe the reason for the default of the param not having the $ is because it isn't a service anymore. You're being passed an alias to the scope. Unlike the controller section above where it is "injected". I don't really know the difference but im sure there is one...maybe.