Когда я расширяю контроллер по угловому, есть ли способ вызвать функцию на контроллере «суперкласса» из функции «подкласс», которая ее переопределяет?Наследование углового контроллера/переопределение методов «суперкласса»
Для ясности - в Java я хотел бы сделать:
class Foo {
void doStuff(){
//do stuff
}
}
class FooBar extends Foo {
void doStuff(){
super.doStuff();
//do more stuff
}
}
, и я хотел бы сделать эквивалент в угловой - то
myApp.controller('FooCtrl', function($scope){
$scope.doStuff = function(){
//do stuff
}
}).controller('FooBarCtrl', function($scope){
angular.extend(this, $controller('FooCtrl', {$scope: $scope}));
$scope.doStuff = function(){
// ??? <- INSERT ANSWER HERE
//do more stuff
}
}
Короткий ответ: да (см .: http://stackoverflow.com/a/19670187/624590). Длинный ответ (/ мнение): рассмотрите миксины или фабрики как средства СУШЕНИЯ вашего кода вместо продолжения/наследования. – DRobinson
Но для того, чтобы ваша попытка работала, запустите старую функцию где-то перед ее переопределением: 'var superDoStuff = $ scope.doStuff; $ scope.doStuff = function() {superDoStuff();/* делать больше вещей * /}; ' – DRobinson