Struggling to resolve resource for route in AngularJS -


i'm working on web app uses django rest framework end , angularjs front end. i'm still new angular , i'm struggling list of projects resolve before page finishes rendering. whenever page loads, chromeconsole reports following error:

error: [$injector:unpr] unknown provider: projectsprovider <- projects <- homectrl http://errors.angularjs.org/1.4.2/$injector/unpr?p0=projectsprovider%20%3c-%20projects%20%3c-%20homectrl     @ regex_string_regexp (http://127.0.0.1:8000/static/bower_components/angular/angular.js:68:12)     @ http://127.0.0.1:8000/static/bower_components/angular/angular.js:4264:19     @ object.getservice [as get] (http://127.0.0.1:8000/static/bower_components/angular/angular.js:4411:39)     @ http://127.0.0.1:8000/static/bower_components/angular/angular.js:4269:45     @ getservice (http://127.0.0.1:8000/static/bower_components/angular/angular.js:4411:39)     @ object.invoke (http://127.0.0.1:8000/static/bower_components/angular/angular.js:4443:13)     @ ident.$get.extend.instance (http://127.0.0.1:8000/static/bower_components/angular/angular.js:9001:34)     @ nodelinkfn (http://127.0.0.1:8000/static/bower_components/angular/angular.js:8111:36)     @ compositelinkfn (http://127.0.0.1:8000/static/bower_components/angular/angular.js:7543:13)     @ publiclinkfn (http://127.0.0.1:8000/static/bower_components/angular/angular.js:7418:30) <div ng-view="" class="ng-scope"> 

here's routes:

var app = angular.module('projectile', [     'ngroute',     'btford.markdown',     'projectile.controllers',     'projectile.services' ])  .config(['$httpprovider', function($httpprovider) {   $httpprovider.defaults.xsrfcookiename = 'csrftoken';   $httpprovider.defaults.xsrfheadername = 'x-csrftoken'; }])  .config(function ($routeprovider) {   $routeprovider     .when('/', {       templateurl: '/static/templates/home.html',       resolve: {         projects: function (multiprojectloader) {           return multiprojectloader();         }       },       controller: 'homectrl'     })     .otherwise({       redirectto: '/'     }); }); 

here's controllers:

angular.module('projectile.controllers', [         'projectile.directives',         'projectile.services',         'ngroute',         'btford.markdown' ])  .controller('homectrl', function ($scope, projects, issue) {   // open issues   $scope.issues = issue.query({ open: true });    // projects   $scope.projects = projects; }); 

here's services:

angular.module('projectile.services', ['ngresource'])  .factory('project', function ($resource) {   return $resource('/api/projects/:projectid'); })  .factory('multiprojectloader', function (project, $q) {   return function() {     var delay = $q.defer();     project.query(function(projects) {       delay.resolve(projects);     }, function() {       delay.reject('unable fetch projects');     });     return delay.promise;   }; }); 

what's gone wrong? , how resolve it? if use debugger inside controller, projects defined , contains correct data, i'm rather stumped.

i can pass through project , run project.query() result, means page gets updated after it's rendered. have spinner directive in place , want wait request finish before rendering page, understand resolve for.

as factory directly returning promise, should not call function multiprojectloader factory. instead should return promise resolve function.

projects: function (multiprojectloader) {     //removed function bracket     return multiprojectloader; //returned promise directive resolve. } 

but singleton considered shouldn't define factory way. should return object factory , have various method used different purpose.

factory

.factory('multiprojectloader', function(project, $q) {     return {         projectquery: function() {             return roject.query().$promise.then(function(projects) {                 return projects;             }, function(error) {                 return error;             });         };     } }); 

resolve

projects: function (multiprojectloader) {     return multiprojectloader.projectquery(); //returned promise } 

Comments