我正在尝试拆分和组织一个 AngularJS 应用程序,使其不仅仅是一个 5000 行的 main.js 文件。拆分指令等并make
用于构建工作代码都很好。但是,我的控制器有几个中等复杂的内部类。这些过去大致定义如下(为清楚起见仅显示一个):
var app = angular.module("infrasense", []);
app.controller("AppMain", function($scope, $http, $timeout) {
function NavTree(dbMain, dbTimeout, allTagTypes, allAttTypes) {
...
}
NavTree.prototype = {
...
}
...
$scope.navTree[0] = new NavTree(dbMain, dbTimeout);
...
});
NavTree 类(它在数据记录应用程序中保存站点和资产的分层树)使用指令呈现,并在内部使用 $http 与后端服务器通信(树太复杂而无法立即保存在内存中,另外它改变)。
为了继续使用简单的(基于猫的)工具来生成我的最终代码,我想将 NavTree 移出控制器。我目前通过从控制器内部将 $http 传递给它来做到这一点:
function NavTree($http, dbMain, dbTimeout, allTagTypes, allAttTypes) {
...
this.$http = $http;
...
}
app.controller("AppMain", function($scope, $http, $timeout) {
...
$scope.navTree[0] = new NavTree($http, dbMain, dbTimeout);
...
});
这可行,但感觉不优雅且非 AngularJS 风格。任何人都可以建议做这种事情的“正确”方式吗?