在Angularjs中扩展基本控制器是一种好习惯吗?
从子控制器内部:
angular.extend(this, $controller('BaseCtrl', {$scope : $scope}));
$controller
官方文档仅提及用于测试目的的用法......
有人可以确认以上是一个好的做法和/或建议替代解决方案吗?
答案 0 :(得分:0)
是的,您可以使用$controller
分享与视图相关的公共代码。在这里检查我的答案。 https://stackoverflow.com/a/27868095/3292746
如果您使用的是controllerAs语法,我们可以通过在javascript中使用类实现来更好地共享代码。
例如:
function CommonCtrl(){
this.commonMethod = function(){
}
}
在您的控制器中
// __extends code is copied from typescript transpiled code.
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var AppCtrl = (function(_super){
__extends(AppCtrl, _super);
function AppCtrl(){
_super.call(this); // calling CommonCtrl constructor.
this.member1 = null;
}
AppCtrl.prorotype.specificMethod = function(){
}
return AppCtrl;
})(CommonCtrl)
app.controller('AppCtrl', AppCtrl);