我正在将一款大型应用程序从Silverlight重写为AngularJS,但在此过程中,我意识到我的每个控制器JS文件都涵盖了2000-3000行的代码。我的所有代码都严重依赖于作用域变量。想知道是否有机会将单个控制器JS文件拆分成多个JS文件?任何指针将不胜感激。
我正在将一款大型应用程序从Silverlight重写为AngularJS,但在此过程中,我意识到我的每个控制器JS文件都涵盖了2000-3000行的代码。我的所有代码都严重依赖于作用域变量。想知道是否有机会将单个控制器JS文件拆分成多个JS文件?任何指针将不胜感激。
使用多个控制器来处理页面中的任务。如果无法避免使用一个大型控制器,则可以通过将作用域传递给另一个方法并在那里定义其余的方法来将定义拆分为多个文件。
第一个文件中:
app.controller('CtrlA', function($scope){
app.expandControllerA($scope);
});
在第二个文件中
app.expandControllerA = function($scope)
{
}
您可以将任何变量或依赖项传递给 expandControllerA 函数。
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 视频。
您可以在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;
))