Как разделить один контроллер в нескольких js файлах в angularjs

Я переписываю большое приложение из серебристого света в angularjs, делая это, я понимаю, что каждый из моего js файла контроллера охватывает 2000-3000 строк кода. Весь мой код сильно зависит от переменных области. Хотите узнать, есть ли возможность разделить один JS файл контроллера на несколько js файлов? Любой указатель будет оценен.

Ответ 1

Используйте несколько контроллеров для обработки задачи на своей странице. Если использование большого контроллера неизбежно, вы можете разделить определение на несколько файлов, передав область действия другому методу, а затем определите остальные методы там.

В первом файле:

app.controller('CtrlA', function($scope){
app.expandControllerA($scope);

});

Во втором файле

app.expandControllerA = function($scope)
{

}

Вы можете передать любую переменную или зависимости для функции expandControllerA.

Ответ 2

Вы также можете создать базовый контроллер и использовать $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 видео.

Ответ 3

Вы могли бы использовать App.factory или app.service в вашем модуле angular, Они больше походили бы на то, чтобы вставлять данные в ваш фрагмент. так что вы можете назначить часть данных вне основного контроллера и наследовать назначенную переменную в своем контроллере.

    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;
))