ngRoute решает проблему с инжектором

0

Я получаю сообщение об ошибке:

[$injector:unpr] http://errors.angularjs.org/1.4.1/$injector/unpr?p0=qProvider%20%3C-%20q%20%3C-%20searchResult

Когда я использую следующую конфигурацию и контроллер. Я пытаюсь разрешить и http-запрос по определенному маршруту.

.when('/fsr/:first', {
            templateUrl: 'views/fsr.html',
            controller: 'fsrCtrl',
            resolve: {
                searchResult: ['$http', 'q', function($http, $q) {
                    var def = $q.defer();
                    var samples;

                    $http.get('/api/fsr').success(function(data, status){
                        samples = data;
                        def.resolve(data);
                    })
                    return {
                        getSamples: function() {
                            return def.promise;
                        }
                    }
                }]
            }
        })





 .controller('fsrCtrl', ['$scope', 'searchResult', function($scope, searchResult){
        searchResult.getSamples().then(function(data){
            console.log(data);
        })
    }])

Почему я получаю это?

Теги:
angularjs-ng-route
ng-controller

1 ответ

0

Вот решение, измените q на $q.

searchResult: ['$http', '$q', function($http, $q) {
  ...
}

var app = angular.module('webbapp', ['ngRoute']);

app.config(['$routeProvider', function ($routeProvider) {

   console.log('woot');

    $routeProvider
    .when('/fsr', {
            templateUrl: 'fsr.html',
            controller: 'fsrCtrl',
            resolve: {
                searchResult: ['$http', '$q', function($http, $q) {
                    var def = $q.defer();
                    var samples;

                    $http.get('/api/fsr').success(function(data, status){
                        samples = data;
                        def.resolve(data);
                    })
                    return {
                        getSamples: function() {
                            return def.promise;
                        }
                    }
                }]
            }
        })
}])

 .controller('fsrCtrl', ['$scope', 'searchResult', function($scope, searchResult){
   
    searchResult.getSamples().then(function(data){
        console.log(data);
    })
}])

angular.bootstrap(document, ['webbapp']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" href="style.css">
  </head>

  <body>
    <h1>Hello Plunker!</h1>
    <a href="#/fsr">Load Fsr view</a>
    <div ng-view=""></div>
    
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.1/angular.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.1/angular-route.min.js"></script>
    
    <script src="app.js"></script>
  </body>
</html>
  • 0
    Я пытаюсь ввести searchResult из разрешения маршрутизатора в мой контроллер
  • 0
    Если вы посмотрите на этот пример: odetocode.com/blogs/scott/archive/2014/05/20/… . Вам все еще нужно что-то вроде app.factory ("searchResult", функция ($ q) {...}).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню