當我在角度擴展控制器時,有沒有什麼辦法從「子類」函數調用「超類」控制器上的函數來覆蓋它?角控制器繼承/重載「超類」方法
爲了清晰 - 在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)。長答案(/意見):考慮mixin或工廠作爲幹你的代碼而不是擴展/繼承的手段。 – DRobinson
但是爲了使你的嘗試工作,在覆蓋它之前將舊的函數藏在某處:'var superDoStuff = $ scope.doStuff; $ scope.doStuff = function(){superDoStuff();/*做更多的東西* /};' – DRobinson