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