Angularjs: Comment injecter les dépendances à résoudre routeProvider
J'ai un problème d'injection de régler les paramètres de routage dans le contrôleur. Je suis réglage de la détermination de la valeur à un objet {name: 'Banner', slug: 'banner'}
, mais j'obtiens une erreur.
App.js
var app = angular.module('CMS', ['fields', 'ngRoute']);
app.controller('ModuleController', ['$http', 'properties',
function($http, properties) {
var module = this;
module.properties = properties;
if (module.properties.slug.length) {
$http.get(module.properties.slug + '.php').success(function(data) {
module.list = data;
});
}
}
]);
app.controller('HomeController', function() {});
app.config(function($routeProvider) {
$routeProvider
//route for the banner page
.when('/banner1', {
templateUrl: 'banner1.php',
controller: 'ModuleController',
resolve: {
properties: function() {
return { name: 'Banner', slug: 'banner' };
}
}
})
.when('/home', {
templateUrl: 'home.php',
controller: 'HomeController'
})
.otherwise({
redirectTo: '/home'
});
});
Erreur:
Error: [$injector:unpr] http://errors.angularjs.org/1.3.14/$injector/unpr?p0=propertiesProvider%20%3C-%20properties%20%3C-%20ModuleController
at Error (native)
at http://modelo2.desenvolvimento.com/adm/js/angular/angular.min.js:6:417
at http://modelo2.desenvolvimento.com/adm/js/angular/angular.min.js:38:7
at Object.d [as get] (http://modelo2.desenvolvimento.com/adm/js/angular/angular.min.js:36:13)
at http://modelo2.desenvolvimento.com/adm/js/angular/angular.min.js:38:81
at d (http://modelo2.desenvolvimento.com/adm/js/angular/angular.min.js:36:13)
at Object.e [as invoke] (http://modelo2.desenvolvimento.com/adm/js/angular/angular.min.js:36:283)
at $get.w.instance (http://modelo2.desenvolvimento.com/adm/js/angular/angular.min.js:75:451)
at http://modelo2.desenvolvimento.com/adm/js/angular/angular.min.js:58:476
at s (http://modelo2.desenvolvimento.com/adm/js/angular/angular.min.js:7:408) <div ng-view="" class="ng-scope">
Saviez-vous que lorsque vous utilisez la non-version minifiée Angulaire, vous obtenez plus de descriptif des messages d'erreur? Essayez la prochaine fois
Je suppose que c'est parce que vous êtes à l'aide de
C'était la ng-controller sur banner1.php. Merci @NewDev!
J'ai répondu avec plus de précision qu'une bonne réponse
Comment le résoudre? J'ai le même problème, pour le résoudre j'ai des données, mais dans le contrôleur n'est pas
Je suppose que c'est parce que vous êtes à l'aide de
ng-controller="ModuleController"
dans /banner1.php
C'était la ng-controller sur banner1.php. Merci @NewDev!
J'ai répondu avec plus de précision qu'une bonne réponse
Comment le résoudre? J'ai le même problème, pour le résoudre j'ai des données, mais dans le contrôleur n'est pas
OriginalL'auteur Nícolas Amarante | 2015-03-11
Vous devez vous connecter pour publier un commentaire.
ngRoute
prend en charge l'injection de résoudre les variables de l'automate, ce qui est utile pour les sujets transversaux de l'application, comme l'authentification ou la configuration de l'application.L'inconvénient est que le contrôleur peut seulement être instancié avec ces paramètres disponibles pour être injecté, ce qui signifie que soit vous instanciez votre contrôleur manuellement (avec
$controller
), qui est presque jamais le cas, ou avecngRoute
à résoudre. Ce que vous ne pouvez pas faire avec un tel contrôleur est l'instancier avecng-controller
ou dans tout autre endroit où l'injection de paramètres ne sont pas disponibles.Cette erreur indique qu'en plus d'avoir défini le contrôleur sur la route, vous avez également le contrôleur défini comme
ng-controller
dans le template de la route. Cette deuxième instanciation du contrôleur est ce qui échoue.J'ai été fou, le message d'erreur devrait être plus explicatif
OriginalL'auteur New Dev
Vous pouvez résoudre des données dans votre contrôleur à l'aide de $service de l'itinéraire.
Veuillez voir la démo ici http://plnkr.co/edit/2oID3G0QStTOGEPPLQ3h?p=preview
donc dans votre exemple, il va se présente comme suit:
et dans le contrôleur :
OriginalL'auteur sylwester
Veuillez fournir plus de détails à votre réponse que ce post a été trouvé dans la faible qualité de la poste. Seul le Code et essayer ce "réponses sont déconseillées, car il ne propose pas de contenu disponible pour la recherche et pourquoi les gens devraient essayer cela".
OriginalL'auteur Сергей Савин
À l'aide de l'Injection de Dépendance avec ng-route
essayez ceci;
OriginalL'auteur Özgür