L'injection de services en AngularJS directive contrôleur directement
Je comprends comment dépendance Angulaire des travaux d'injection avec les directives mais je voulais clarifier quelque chose. J'ai un mannequin de test directive comme suit:
app.directive("test", [
function() {
return {
restrict: "E",
scope: {},
controller: ["$scope", "$filter",
function($scope, $filter) {
var food = ["Apple pie", "Apple cobler", "Banana Split", "Cherry Pie", "Applesauce"];
$scope.favorites = $filter('filter')(food, "Apple");
}
],
template: "<div>{{favorites}}</div>"
}
}
]);
Cela fonctionne bien et filtre le food
tableau comme prévu. Cependant j'ai remarqué que si j'injecte le $filter
service dans la directive comme suit, ça fonctionne encore:
app.directive("test", ["$filter",
function($filter) {
return {
restrict: "E",
scope: {},
controller: ["$scope",function($scope) {...
Ma question: Est-il préférable d'injecter des services dans une directive dans la déclaration de la ligne comme ceci:
app.directive("test", ["$filter", function($filter) {
ou dans le contrôleur de ligne comme ceci:
controller: ["$scope", "$filter", function($scope, $filter) {
?
Il n'y a pas de différence? Voici une Plunker de la directive de code.
OriginalL'auteur TrazeK | 2014-08-04
Vous devez vous connecter pour publier un commentaire.
Dans ce cas, vous recevez le même service, alors il est probable n'a pas trop d'importance. Personnellement, je préfère le garder comme localisée que possible; si vous n'avez pas besoin
$filter
dans lelink
fonction ou quelque chose comme ça, je venais de l'injecter dans le contrôleur.Dans certains cas, cela peut aussi rendre plus facile pour se moquer de dépendance au cours de l'essai.
OriginalL'auteur Michelle Tilley
Vous pouvez le faire aussi. Beaucoup mieux par le fractionnement de la directive et de son contrôleur dans un seul fichier. Ou vous pouvez écrire dans des fichiers séparés. Mais, de mieux comprendre les
OriginalL'auteur Mr_Perfect