AngularJS : Pourquoi mon usine toujours pas défini dans mon contrôleur?

Mon usine n'est pas défini dans mon contrôleur et je ne peux pas comprendre pourquoi. J'ai créé un exemple simple pour illustrer.

Ici, j'ai créer l'application:

var ruleApp = angular
    .module( "ruleApp", [ 
        "ngRoute",  
        "ruleApp.NewFactory1",
        "ruleApp.NewFactory2",
    ] );

Dans ce mannequin exemple j'aimerais construire une usine qui fait quelque chose de simple, d'afficher une boîte d'alerte. Je vais vous montrer deux méthodes (on travaille, on n'a pas).

Usine 1:

angular
    .module('ruleApp.NewFactory1', [])
    .factory('NewFactory1', function() {
        return function(msg) {
            alert(msg);
        };
  });

Factory 2:

angular
    .module('ruleApp.NewFactory2', [])
    .factory('NewFactory2', function() {
        var showMessageFunction = function(msg) {
            alert(msg);
        };
        return 
        {
            showMessage: showMessageFunction
        };
  });

Avis le type de retour de l'usine 1 est une fonction et le type de retour de l'usine 2 est un objet avec une propriété (qui est de type fonction).

Maintenant, regardez comment j'aimerais utiliser deux de ces usines dans mon controller:

 ruleApp.controller( "RuleController", function( $scope, NewFactory1, NewFactory2 ) {
    NewFactory1("1");
    NewFactory2.showMessage("2");
});

C'est là que le problème se trouve exposé. Lors de l'exécution, je suis invité avec la boîte d'alerte pour NewFactory1("1");, mais il échoue en cours d'exécution de NewFactory2.showMessage("2"); parce que NewFactory2 est pas défini (TypeError: Impossible d'appeler la méthode "showMessage" de non-défini).

Pouvez-vous m'aider à repérer le problème? Je veux être en mesure d'utiliser les usines, comme NewFactory2 parce que je veux les usines pour être en mesure de faire plus que juste une chose (c'est à dire avoir plus qu'une seule fonction). En passant, je suis en utilisant Angulaire de la version 1.2.1.

Vous devriez essayer de reproduire cela dans un plunker.

OriginalL'auteur Trevor | 2013-11-26