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.)