In angular directives I've seen in tutorials either
link: function($scope,$element,attrs)
or
link: function(scope,element,attrs)
Now I know that the '$' means a service in angular , does this hold here ? What exactly is the difference between $scope and scope ? Same goes to element vs $element
$does not mean service in Angular. It denotes some Angular property so it would not collide with your model's properties. It is a simple as it gets - a prefix, nothing more. You can use either approach.$injectorresolves dependencies in 3 ways: inline annotations, $inject annotations and inferred arguments. Therefore in some cases it will work without the$. You can read it in Angular's manual. While$httpis a service, neither$scope, nor$attributesaren't. They denote Angular properties (services including).$. Once you get comfortable with the$injector, you can choose you own approach. But keep in mind that with such convetion any code minification script will break you dependencies.