在angularjs

时间:2016-02-05 08:59:35

标签: angularjs

在Angularjs中扩展基本控制器是一种好习惯吗?

从子控制器内部:

angular.extend(this, $controller('BaseCtrl', {$scope : $scope}));

$controller官方文档仅提及用于测试目的的用法......

有人可以确认以上是一个好的做法和/或建议替代解决方案吗?

1 个答案:

答案 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);