Я пытаюсь разделить и организовать приложение AngularJS, так что это не только файл main.js 5000. Отключение директив и т. Д. И использование 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-иш. Может ли кто-нибудь предложить «правильный» способ сделать такие вещи?
Рассмотрите возможность использования NavTree. –
Как сказал @kju, создайте услугу и закачайте службу в нужные контроллеры. Внутри вашего сервиса сделайте вызов '$ http' и передайте обещание контроллеру. – tymeJV
Спасибо! Я ухожу, чтобы исследовать службы и посмотреть, могу ли я преобразовать код в один. Я отредактирую свой вопрос, чтобы включить решение, когда/если оно у меня есть. –