Угловая директива с опциями по умолчанию

Я только начинаю с angularjs и работаю над преобразованием нескольких старых плагинов JQuery в директивы Angular. Я'Я хотел бы определить набор параметров по умолчанию для директивы my (element), которую можно переопределить, указав значение параметра в атрибуте.

мы осмотрели, как это сделали другие, и вУгловое-щ библиотекаui.bootstrap.pagination кажется, делает что-то подобное.

Сначала все параметры по умолчанию определяются в постоянном объекте:

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

ЗатемgetAttributeValue Функция полезности привязана к директиве контроллера:

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

Наконец, это используется в функции связывания для чтения в атрибутах как

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

Это выглядит довольно сложной настройкой для чего-то стандартного, например, для замены набора значений по умолчанию. Есть ли другие способы сделать это, которые распространены? Или это нормально, чтобы всегда определять функцию полезности, такую какgetAttributeValue а разбирать варианты таким способом? Я'Мне интересно узнать, какие у людей разные стратегии для решения этой общей задачи.

Также в качестве бонуса яМне не понятно, почемуinterpolate параметр обязателен

Ответы на вопрос(3)

Ваш ответ на вопрос