См. пример здесь
foodMeApp.directive('fmRating', function() {
  return {
    restrict: 'E',
    scope: {
      symbol: '@',
      max: '@',
      readonly: '@'
    },
    require: 'ngModel',
    link: function(scope, element, attrs, ngModel) {
      attrs.max = scope.max = parseInt(scope.max || 5, 10);
...
 Angular требуется symbol, max, readonly для определения в изолированном объекте scope для доступа к нему из родительской области.
используется здесь
 <fm-rating ng-model="$parent.restaurant.price" symbol="$" readonly="true"></fm-rating>
Итак, какова цель attrs? Невозможно получить доступ ко всем атрибутам, прошедшим через attrs. Почему невозможно получить значение max как attrs.max вместо scope.max
Зачем назначать назад, например attrs.max = scope.max?
Поскольку это приложение написано авторами Angular, я ожидаю причину.
спасибо.