2016-01-28 2 views
-1

Я искал директивное наследование в AngularJS с небольшой удачей. У меня есть абстрактная директива (только для контроллера), которая опирается на определенные параметры, которые обычно находятся в области действия директивы. Я могу наследовать контроллер просто отлично, но, похоже, я должен повторно объявить все параметры абстрактной директивы для каждого вывода, что означает, что изменения параметров абстрактной директивы должны быть включены вручную в каждую реализацию.AngularJS: Наследование директивы: контроллер и область применения

Есть ли способ наследовать контроллер директивы и область/параметры?


Пример только:

function Abstract($scope) { 
    $scope.paramAbstractNeedsButDoesntExist 

    // Do cool stuff 
} 

function Inheritor() { 
    return { 
     controller: ['$controller', function ($controller) { 
      $controller('Abstract', {$scope: $scope}); 

      // Do my cool stuff 
     }], 
     ... 
     scope: { 
      // Inheritor's stuff 
      paramInheritorNeeds: '@' 
     } 
    }; 
} 

Я изложил то, что я делаю. Не стесняйтесь предлагать альтернативные подходы, но главный вопрос еще предстоит решить.

+1

абстрактная директива в смысле что? –

+1

Просьба привести пример кода того, что вы пытаетесь сделать. * «абстрактная директива» * ничего не значит, не видя, что вы говорите о – charlietfl

+0

. Каковы скобки, квалифицирующие, что это только контроллер, недостаточно явный? – ricksmt

ответ

0

В итоге я создал службу с помощью метода, который возвращает область абстрактного класса; базовый класс затем расширяет эту область и добавляет ее собственные свойства/параметры. Я использую [$controller][1] для наследования поведения абстрактного класса. С этой целью я удалил bindToController и controllerAs из определения директивы базового класса; таким образом, абстрактный класс может полагаться на свои свойства, находящиеся в параметре области.

Смежные вопросы