So I've been using AngularJS for a couple months now and I've scoured the internet and my AngularJS Directives book for an answer to this.
In directives, I almost always see this block of code:
link: function(scope, element, attrs) {
//body
}
What exactly are the items inside the function "scope, element, attrs"? This might be a stupid question but I cannot seem to find the answer anywhere.
Thanks!
the parameters scope, element, and attrs are defined for your custom directive, as per the documentation here, but you can rename them to your like.
scope: this is the scope for your custom directive, similar to the $scope in a controller
element: this is the element of your custom directive
attrs: this is the set of attributes in your custom directive. (should be the attributes of the element, thanks to @zeroflagL for correction!)
For example, if you build a custom directive named myDirective, and you would probably use it in your html partials like this:
<my-directive num-rows="3"></my-directive>
Here, the num-rows is an attribute for your directive, and you can get its value in your link function:
function link(scope, element, attrs) {
console.log('num-rows:', attrs.numRows);
//you can change its value, too
attrs.$set('numRows', '10'); //attrs setter
//you can watch for its changes to trigger some event
attrs.$observe('numRows', function(newVal) {
console.log('trigger some event for the changes in numRows here');
});
}
Also, in the link function above, you can bind the element/directive to an action:
element.bind('click', function() {
console.log('do something with the click event');
});
I suggest you spend some time reading the documentation. The link function can take a 4th parameter that is the controller of another directive that you require in your custom directive. e.g.:
require: '^ngModel'
....
function link(scope, element, attrs, ngModelCtrl) {
....
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With