如何在angularjs中拆分多个js文件中的单个控制器

时间:2014-09-13 03:56:59

标签: angularjs controllers

我正在重写从silver-light到angularjs的大型应用程序,同时这样做,我意识到我的每个控制器js文件都是跨越2000-3000行代码。我的所有代码都严重依赖于 scope 变量。想知道是否有机会将单个控制器js文件拆分成多个js文件?任何指针都会受到赞赏。

3 个答案:

答案 0 :(得分:24)

使用多个控制器来处理页面中的任务。如果使用larg控制器是不可避免的,可以通过将范围传递给另一个方法然后在那里定义其余方法,将定义拆分为多个文件。

在第一个文件中:

app.controller('CtrlA', function($scope){
app.expandControllerA($scope);

});

在第二个文件中

app.expandControllerA = function($scope)
{

}

您可以将任何变量或依赖项传递给expandControllerA函数。

答案 1 :(得分:3)

您还可以创建基本控制器并使用$controller服务来创建派生控制器。

例如:

function BaseCtrl($scope, options) {
    var vm = this;

    // code
    return vm;
}

function ChildCtrl($controller, $scope) {
    var vm = $controller('BaseCtrl', {
        $scope: $scope,
        options: { }
    });

    // extend view model
    vm.name = '';

    return vm
}

还有其他方法可以将控制器拆分为单独的文件,请查看此ng-conf video

答案 2 :(得分:2)

您可以在角度模块中使用App.factory或app.service,它们更像是在您的代码段中隐藏数据。这样您就可以在主控制器外部分配数据部分,并在控制器中继承分配的变量。

    app.factory('name of the factory',function(){
return (data)
   )
app.controller('$scope','name of the factory', function(scope, name of the factopry

$scope.new = data;
))