Angular Link Function: $Scope vs Scope

All we need is an easy explanation of the problem, so here it is.

In angular directives I’ve seen in tutorials either

 link: function($scope,$element,attrs)


 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

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

In your specific example, it does not matter what the parameters are named in your link function. When Angular processes the directive, it will pass the scope, element and attrs (and even a controller instance if configured) to your link function.

You could do this (not recommended):

link: function (s, e, a)

and it will work fine.

$ is the prefix used by Angular. It is a convention and helps avoid naming collisions.

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from or, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply