web-dev-qa-db-fra.com

Comment diviser un seul contrôleur en plusieurs fichiers js dans angularjs

Je réécris une grande application de silver-light à angularjs, tout en le faisant, je me rends compte que chacun de mes fichiers js de contrôleur est couvrant 2000-3000 lignes de code. Tout mon code dépend fortement des variables scope. Vous vous demandez s'il est possible de diviser un fichier js de contrôleur unique en plusieurs fichiers js? Tout pointeur serait apprécié.

30
Mothupally

Utilisez plusieurs contrôleurs pour gérer la tâche dans votre page. Si l'utilisation d'un contrôleur larg est inévitable, vous pouvez diviser la définition en plusieurs fichiers en passant l'étendue à une autre méthode, puis y définir le reste des méthodes.

Dans le premier fichier:

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

});

Dans le deuxième fichier

app.expandControllerA = function($scope)
{

}

Vous pouvez transmettre n'importe quelle variable ou dépendance à la fonction expandControllerA.

24
Alborz

Vous pouvez également créer un contrôleur de base et utiliser le service $ controller pour créer des contrôleurs dérivés.

Par exemple:

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
}

Il existe d'autres façons de diviser les contrôleurs en fichiers séparés, consultez ce ng-conf vidéo .

3
Aman Mahajan

Vous pouvez utiliser App.factory ou app.service dans votre angular, Cela ressemblerait plus à l'héritage des données de votre extrait. afin que vous puissiez affecter la partie des données en dehors du contrôleur principal et hériter de la variable affectée dans votre contrôleur.

    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;
))
2
vinod bazari