9
votes

Fournisseur inconnu $ HTTP en angulaire

J'ai besoin d'utiliser $ http code> service dans la méthode de configuration. Mais je ne peux pas utiliser $ http code> dans config, je reçois fournisseur inconnu code> message d'erreur.

My Code: P>

.config(function($http, $routeProvider, $provide) {
    $http.get("sampleslist.js").success(function(data) {
        var loop = 0, currentRoute;

        for (loop = 0; loop < data[loop].pages.length; loop++) {
            currentRoute = data[loop].pages;

            var routeName = "/" + currentRoute[loop].name;
            $routeProvider.when(routeName, {
                templateUrl:"/" + currentRoute.name + ".html",
            })
        }
    })

    app = {controller: $controllerProvider.register}
})


2 commentaires

Eh bien, comme vous l'avez dit, vous ne pouvez pas utiliser $ http dans la phase de configuration. Vous pouvez cependant l'utiliser dans la phase d'exécution.


Dupliqué possible de Service d'injection à app.config


5 Réponses :


3
votes

Si vous devez simplement faire une demande AJAX, vous pouvez réellement récupérer $ Server HTTP à partir du nouvel injecteur:

.config(function($routeProvider, $provide) {
    var $http = angular.injector(['ng']).get('$http');
    $http.get("sampleslist.js").success(

        function(data) {

            var loop = 0,
                currentRoute;

            for (loop = 0; loop < data[loop].pages.length; loop++) {

                currentRoute = data[loop].pages;

                var routeName = "/" + currentRoute[loop].name;

                $routeProvider.when(routeName, {

                    templateUrl: "/" + currentRoute.name + ".html",

                })
            }
        })

    app = {
        controller: $controllerProvider.register,
    }
})


2 commentaires

$ routeProvider.Lorsque (routename, {}) cette fonction ne frappe pas, pourquoi?


Je ne suggérerais même pas que l'OP contourner la limitation (intentionnelle) que angulaire a mis en place; Même dans ce cas, succès est une méthode obsolète et ne doit pas être utilisé. Accéder à $ http de cette façon semble dangereux ...



3
votes

Nous ne pouvons pas utiliser http dans config. Pour plus de détails, veuillez cocher ce lien:

Utilisez $ HTTP INTERNING FOURNISSEUR SUR L'APP CONFIG , angular.js


0 commentaires

3
votes

Vous pouvez injecter uniquement des fournisseurs dans le fichier .config. Mais http n'est pas fournisseur, votre application angulaire recherche un fournisseur nommé $ http mais il n'est pas capable de le trouver afin qu'il a jeté une erreur.

Comment résoudre ce problème ??

Si vous voulez un appel AJAX avant votre chargement de votre contrôleur angulaire, vous pouvez le faire dans .Run


1 commentaires

Selon mes connaissances / la lecture, c'est qu'il coule de travail angulaire. Ci-dessus, je voulais dire, vous pouvez courir quelque chose avant votre chargement de votre contrôleur. Je devrais avoir mentionné des données plutôt que pour le chargement de la page. app.config () app.Run () Fonctions de compilation de la directive (si elles sont trouvées dans les fonctions de liaison de la directive DOM) App.Controller () (à nouveau, si elles sont trouvées)



4
votes

Ce n'est pas une bonne pratique d'utiliser $ http dans le .config . On peut l'utiliser soit dans .run ou peut utiliser le service à l'aide de .service ou .Factory . .


1 commentaires

Il ne s'agit pas de la pratique. Nous ne pouvons pas injecter $ http in .config.



1
votes

Avez-vous un contrôle sur sampleslist.js code>? Si oui, il suffit-il de le télécharger à l'aide de la balise et d'affecter des valeurs aux variables.

//sampleslist.js
var samplelist = {...}

//index.html
<script src="samplelist.js"></script>


0 commentaires