Diretiva Angular com opções padrão

Eu estou apenas começando com angularjs e estou trabalhando na conversão de alguns plugins antigos do JQuery para diretivas Angular. Gostaria de definir um conjunto de opções padrão para minha diretiva (element), que pode ser substituída especificando o valor da opção em um atributo.

Eu tive um olhar ao redor para a maneira como os outros fizeram isso, e noangular-ui biblioteca doui.bootstrap.pagination parece fazer algo semelhante.

Primeiro todas as opções padrão são definidas em um objeto constante:

.constant('paginationConfig', {
  itemsPerPage: 10,
  boundaryLinks: false,
  ...
})

Então umagetAttributeValue função de utilidade é anexada ao controlador de diretiva:

this.getAttributeValue = function(attribute, defaultValue, interpolate) {
    return (angular.isDefined(attribute) ?
            (interpolate ? $interpolate(attribute)($scope.$parent) :
                           $scope.$parent.$eval(attribute)) : defaultValue);
};

Finalmente, isso é usado na função de vinculação para ler em atributos como

.directive('pagination', ['$parse', 'paginationConfig', function($parse, config) {
    ...
    controller: 'PaginationController',
    link: function(scope, element, attrs, paginationCtrl) {
        var boundaryLinks = paginationCtrl.getAttributeValue(attrs.boundaryLinks,  config.boundaryLinks);
        var firstText = paginationCtrl.getAttributeValue(attrs.firstText, config.firstText, true);
        ...
    }
});

Isso parece ser uma configuração bastante complicada para algo tão padrão quanto querer substituir um conjunto de valores padrão. Existem outras maneiras de fazer isso que são comuns? Ou é normal sempre definir uma função de utilidade comogetAttributeValue e analisar as opções dessa maneira? Estou interessado em descobrir que estratégias diferentes as pessoas têm para essa tarefa comum.

Além disso, como bônus, não estou claro por queinterpolate parâmetro é obrigatório.

questionAnswers(3)

yourAnswerToTheQuestion