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