如何在angularjs中将单个控制器拆分为多个js文件
我正在将一个大型应用程序从silver light重写为angularjs,在编写过程中,我意识到我的每个controller js文件都跨越了2000-3000行代码。我所有的代码都严重依赖于范围变量。想知道是否有机会将单个控制器js文件拆分为多个js文件?任何指针都将不胜感激。使用多个控制器来处理页面中的任务。如果不可避免地要使用larg控制器,可以通过将范围传递给另一个方法,然后在那里定义其余的方法,将定义拆分为多个文件 在第一个文件中:如何在angularjs中将单个控制器拆分为多个js文件,angularjs,controllers,Angularjs,Controllers,我正在将一个大型应用程序从silver light重写为angularjs,在编写过程中,我意识到我的每个controller js文件都跨越了2000-3000行代码。我所有的代码都严重依赖于范围变量。想知道是否有机会将单个控制器js文件拆分为多个js文件?任何指针都将不胜感激。使用多个控制器来处理页面中的任务。如果不可避免地要使用larg控制器,可以通过将范围传递给另一个方法,然后在那里定义其余的方法,将定义拆分为多个文件 在第一个文件中: app.controller('CtrlA', f
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成为维护的关键,因此是一个问题。请务必让我知道是否有办法将控制器拆分为多个文件并共享作用域。应在第一个文件之前加载第二个文件。应用程序也应该在第二个文件中定义