Lors de la création de l'application de tableau de bord, je suis arrivé à une situation où j'ai besoin d'un contrôleur et d'un service AngularJS
en un.AngularJS Controller en tant que service ou service en tant que contrôleur
A principal (1er) page que j'ai mainController
(rien à voir avec la mise en page) et aussi layoutController
qui est binded aux boutons avec des méthodes loadLayoutFromAPI()
et saveLayoutToAPI()
.
Maintenant, au secondaire (2e), il y a secondController
seulement et non layoutController
. Je dois utiliser des méthodes de layoutController
directement à partir de secondController
et je préfère ne pas insérer la directive ng-controller
à l'intérieur du HTML (au lieu de le mettre à secondController
via le service d'injection de dépendance).
MainPage (1er):
<div ng-controller="mainController">
<!-- some other code -->
<div ng-controller="layoutController as ctrl">
<a href="#" ng-click="ctrl.loadLayoutFromAPI()">Load</a>
<a href="#" ng-click="ctrl.saveLayoutToAPI()">Save</a>
</div>
</div>
SecondaryPage (2):
<div ng-controller="secondController">
<!-- some other code -->
</div>
j'ai essayé de chercher ce problème, mais pas de réponse du tout trouvé.
Question: Comment dois-je utiliser le même morceau de code (méthodes save()
et load()
) une fois en tant que contrôleur (ng-controller
) et d'autres temps en tant que service (inclus) via dependency-injection
?
Merci
JS Bin comme l'a demandé
Créer une repro en jsbin ou plnkr] –
En outre, ne pas utiliser des méthodes d'autres contrôleurs directement à partir d'autres contrôleurs ... c'est pourquoi les services sont là. Les contrôleurs sont seulement là pour s'engager avec la vue! –
@CallumLinington Ajout de JSBin dans Q, je suis d'accord avec Vous sur ce principe (ctrl pour View, service pour code-behind), mais comment éviter d'écrire deux fois le même code? J'ai eu une idée sur l'utilisation de 'layoutService', puis en créant' layoutController' comme un Wrapper, qui appelle les méthodes de service. Est-ce approprié? – Tatranskymedved