Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在angularjs中将单个控制器拆分为多个js文件_Angularjs_Controllers - Fatal编程技术网

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

如何在angularjs中将单个控制器拆分为多个js文件,angularjs,controllers,Angularjs,Controllers,我正在将一个大型应用程序从silver light重写为angularjs,在编写过程中,我意识到我的每个controller js文件都跨越了2000-3000行代码。我所有的代码都严重依赖于范围变量。想知道是否有机会将单个控制器js文件拆分为多个js文件?任何指针都将不胜感激。使用多个控制器来处理页面中的任务。如果不可避免地要使用larg控制器,可以通过将范围传递给另一个方法,然后在那里定义其余的方法,将定义拆分为多个文件 在第一个文件中: app.controller('CtrlA', f

我正在将一个大型应用程序从silver light重写为angularjs,在编写过程中,我意识到我的每个controller js文件都跨越了2000-3000行代码。我所有的代码都严重依赖于范围变量。想知道是否有机会将单个控制器js文件拆分为多个js文件?任何指针都将不胜感激。

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

在第一个文件中:

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

});
在第二个文件中

app.expandControllerA = function($scope)
{

}

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

您可以在angular模块中使用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;
))

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

例如:

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配置。

服务和工厂应该是您的朋友。您还提到,事情依赖于许多范围变量。如果某个东西没有绑定到DOM,我尽量不将它挂在scopePramod上,尽管它跨越2-3K,但代码是模块化的;然而,单个文件中的2-3K javascript成为维护的关键,因此是一个问题。请务必让我知道是否有办法将控制器拆分为多个文件并共享作用域。应在第一个文件之前加载第二个文件。应用程序也应该在第二个文件中定义