Jonathan Szekely
Jonathan Szekely

Reputation: 207

Angular route resolve not passing to controller

For some reason whatever i do i cannot get my data to the controller no matter what i do, i keep getting this error

Error: [$injector:unpr] Unknown provider: initDataProvider <- initData <- PackingScanController

first file

var Application = angular.module('ReporterApplication', ['ngRoute']);


Application.config(['$routeProvider', '$interpolateProvider',

    function($routeProvider, $interpolateProvider) {

        $interpolateProvider.startSymbol('<%');
        $interpolateProvider.endSymbol('%>');

        $routeProvider

            .when('/packing/scan.html', {
                controller: 'PackingScanController',
                templateUrl: 'packing/scan.html',
                resolve: {

                    initData : function () {
                        return "shite";
                    }


                }
            }) etc more code

second file

Application.controller('PackingScanController', ['$scope', '$http', 'initData', function($scope, $http, initData) {

    var packer = this;

    $scope.packedToday = initData;

Upvotes: 1

Views: 139

Answers (1)

dfsq
dfsq

Reputation: 193261

The posted code is all right, you are injecting initData properly with resolve route block. However you are probably using explicit ngController in you route template. You don't want it, and of course in this case there is no initData service available which results in error you are getting.

Solution is simple: just remove

ng-controller="PackingScanController" 

from your packing/scan.html template and it will work fine.

Explicit controller binding is not needed in this case since template is already bound properly to controller instance created behind the scene by $route service, with all necessary dependencies properly injected.

Upvotes: 1

Related Questions