web-dev-qa-db-fra.com

AngularJS - Injection d'usine dans la fonction de liaison de la directive

J'ai un code simple:

define(['app'], function(app)
{
    app.factory('factoryProvider', function(){
        return {
            name: 'my Name'
        }
    });

    app.directive('myDiv',['factoryProvider', function(factoryProvider) {
        return {
            restrict: 'E',
            replace: true,
            templateUrl: 'link/to/template.html',
            controller: function($scope) {
            },
            link: function(scope, routeParams, location) {
                console.log(factoryProvider.name);
            }
        };   
    }])
});

Je veux pouvoir accéder à myFactorydans la fonction link, mais je ne peux pas! J'ai également essayé link: function(scope, routeParams, location, factoryProvider) et cela n'a pas fonctionné non plus. Pourquoi?

18
Kousha

Il devrait déjà être disponible dans la fonction de lien

app.factory('factoryProvider', function(){
    return {
        name: 'my Name'
    }
});

app.directive('myDiv',['factoryProvider', function(factoryProvider) {
    return {
        restrict: 'E',
        replace: true,
        template: '<p>{{name}}</p>',
        controller: function($scope) {
        },
        link: function(scope) {
            scope.name=factoryProvider.name;
        }
    };
}]);
18
NicolasMoise