Это важно понимать, что AngularJS контроллер просто обычный JavaScript «класс». Единственный улов - вызов базового конструктора с инъекцией зависимостей.
// Create some base class.
BaseController = function($scope, $route) {
// Do some stuff here.
};
// The base class has some behavior.
BaseController.prototype.someMethod = function() { /* do something */ };
// Create some child class.
ChildController = function($scope, $injector) {
// Invoke the base constructor.
$injector.invoke(this, BaseController, {$scope: $scope});
};
// Inherit from the base class.
ChildController.prototype = Object.create(BaseController.prototype);
// Add more specific behavior.
ChildController.prototype.someChildMethod = function() { /* do something */ };
Затем вы можете зарегистрировать свой контроллер как
angular.module('myApp').controller('ChildController', ChildController);
Имейте в виду, что с помощью наследования, как это будет проблематично, если слишком часто. Его следует использовать только для обмена поведением. Кроме того, использование состава разных «классов», как правило, будет гораздо более гибким, чем использование наследования.
С точки зрения организации кода, я бы также рекомендовал вам объявлять контроллеры в одном месте (по одному файлу на контроллер) и регистрировать их на модулях в другом месте (по одному файлу на модуль).
Возможный дубликат [Может ли контроллер AngularJS наследовать от другого контоллера в том же модуле?] (Http://stackoverflow.com/questions/18461263/can-an-angularjs-controller-inherit-from-another-contoller- in-the-same-module) – Shomz