Please see the example here
foodMeApp.directive(\'fmRating\', function() {
return {
restrict: \'E\',
scope: {
symbol: \'@\',
max: \'@\
what is the purpose of attrs?
Attributes defined on the same element as your directive have a few purposes:
Can't one access all the attributes passed through attrs?
Yes you can, but
{{}}
s will cause you problems, since they will not be interpolated.
and the parent scope has $scope.name='Mark'
. Then, inside the linking function, console.log(attrs.name)
results in undefined
.
attrs.$observe('name', function(val) { console.log(val) })
results in My name is Mark
. (Note that inside the linking function, $observe() must be used to get the interpolated value.)Why can't one access value of max as attrs.max instead of scope.max
answered above
Why assign back like attrs.max = scope.max ?
The only reason I can think of for doing this is in case some other directive needs to see this attribute/value (i.e., inter-directive communication). However, the other directive would need to run after this directive for this to work (which can be controlled somewhat with the priority
directive setting).
Summary: in a directive with an isolate scope, normally you don't want to use attrs
. (I suppose it could be a way to send initialization data/values into a directive -- i.e., if you don't need databinding for these values and you don't need interpolation.)