J'ai besoin d'utiliser My Code: P> $ 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.
.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}
})
5 Réponses :
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, } })
$ 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 code> est une méthode obsolète et ne doit pas être utilisé. Accéder à
$ http code> de cette façon semble dangereux ...
Nous ne pouvons pas utiliser http dans config. Pour plus de détails, veuillez cocher ce lien: p>
Utilisez $ HTTP INTERNING FOURNISSEUR SUR L'APP CONFIG , angular.js p>
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. p>
Comment résoudre ce problème ?? p>
Si vous voulez un appel AJAX avant votre chargement de votre contrôleur angulaire, vous pouvez le faire dans .Run p>
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)
Ce n'est pas une bonne pratique d'utiliser $ http code> dans le
.config code>. On peut l'utiliser soit dans
.run code> ou peut utiliser le service à l'aide de
.service code> ou
.Factory code>. P>.
Il ne s'agit pas de la pratique. Nous ne pouvons pas injecter $ http in .config.
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>
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