2016-01-29 5 views
0

routes.js

angular 
     .module('main') 
     .config(config); 

    config.$inject = ['$routeProvider', '$httpProvider']; 

    function config($routeProvider){ 

     $routeProvider 
      .when('/', { 
       templateUrl:'main/views/landing.client.view.html', 
       controller:'MainController', 
       controllerAs:'mainCtrl', 
       resolve: { 
        orgTypes: orgTypes 
       } 
      }) 
      .otherwise({ 
       redirectTo:'/' 
      }); 

    } 


    function orgTypes($http){ 

     return $http 
      .get('emrsvs/orgTypes') 
      .then(function successCallBack(response){ 
       return response; 
      }, function errorCallBack(error){ 
       console.log(error); 
      }); 

    } 

controller.js

angular 
     .module('main') 
     .controller('MainController', MainController); 

    MainController.$inject = ['$rootScope', '$timeout', 'orgTypes']; 

    function MainController($rootScope, $timeout, orgTypes){ 

     var mainCtrl = this; 
     mainCtrl.orgTypes = orgTypes; 

    } 

Ошибка

[$injector:unpr] Unknown provider: orgTypesProvider <- orgTypes <- MainController 

Здесь я вводить депрессию endency 'orgTypes' от маршрута к контроллеру. Это привело к ошибке неизвестного поставщика. Что-то не так с моим sysntax? может кто-то найти мою ошибку

ответ

1

Вы должны включать следующий код в routes.js, перед определением функции orgTypes

angular.module('main') 
 
     .factory('orgTypes', orgTypes); 
 
    orgTypes.$inject = ['$http']; 
 
/*You need to apply following changes also in controller*/ 
 
angular 
 
    .module('main') 
 
    .controller('MainController', MainController); 
 

 
MainController.$inject = ['$rootScope', '$timeout', 'orgTypes']; 
 

 
function MainController($rootScope, $timeout, orgTypes){ 
 

 
    var mainCtrl = this; 
 
    orgTypes.then(function(response){ 
 
     mainCtrl.orgTypes = response; 
 
    }) 
 

 
} 
 

+0

Почему мне нужно объявить его как завод. Это просто нормальный массив значений с сервера –

+1

«orgTypes», этот провайдер, которого вы ввели в mainctrl, вы можете вводить только угловые провайдеры в контроллерах. поэтому вы можете создавать Угловые Провайдеры с использованием фабрики/сервиса/значения .... – saikumar

0

Я не вижу ничего плохого, если вы впрыскивать контроллер с ng-view директивой.

<div ng-app="main"> 
    <ng-view></ng-view> 
</div> 

Ваш код работает в this JSFiddle.

В конфигурации вашего маршрутизатора вы вводите orgTypes из функции распознавателя. Служба $routeProvider вводит преобразователи как местных жителей в контроллеры. Этот метод работает нормально.

Если вы используете директиву ng-controller для загрузки MainController, вы получите эту ошибку. В этом случае служба $compile не имеет доступа к этим резольверам.

Смежные вопросы