Подтвердить что ты не робот

AngularJS, решение и неизвестный поставщик

У меня два пути с решимостью. Выполняется следующим образом:

.when('/foos', {
templateUrl: 'views/foos.html',
controller: 'FoosCtrl',
resolve: {
    foo_list: ['$q', '$route', '$timeout', '$location', 'Foos', function($q, $route, $timeout, $location, Foos) {
        // postpone the execution
        var deferred_foo = $q.defer()

        Foos.getFoos({token:session_uid}, successCb)

        function successCb(list) {
            if(list['status'] === 200) {
                deferred_foo.resolve(list)
            }
            else {
                alert('Crashcrashcrash')
                deferred_foo.reject("Something just wasn't right")
                //$location.path('maintenance')
            }
        }
        return deferred_foo.promise
        }]
    }
})
.when('/r/:type/:bar_id', {
    templateUrl: 'views/bar.html',
    controller: 'BarsCtrl',
    resolve: {
        bar: ['$q', '$route', '$timeout', '$location', 'Bars', function($q, $route, $timeout, $location, Bars) {
            // postpone the execution
            var deferred = $q.defer()

            Bars.getBar({type: bar_type}, successCb)    

            function successCb(result) {
                if(result['status'] === 200) {
                    deferred.resolve(result)    
                }
                else {
                    alert('Crashcrashcrash')
                    deferred.reject("Something just wasn't right")
                    $location.path('foos')
                }

                return deferred.promise
                }]
            }
        })

Тогда у меня есть два контроллера, которые работают так:

 App.controller('FoosCtrl', ['$scope', '$location', 'Foos', 'foo_list', function($scope, $location, Foos, foo_list) {...}

 App.controller('BarsCtrl', ['$scope', '$routeParams', '$location', 'Bars', 'bar', 'sharedService', function($scope, $routeParams, $location, Bars, bar, sharedService) {...}

Может кто-нибудь объяснить, почему работает Бар, но Foo дает мне Error: Unknown provider: foo_listProvider <- foo_list? Я попытался заменить foo_list на другое имя в случае, если camelCasing что-то сделал, но не помог.

4b9b3361

Ответ 1

Итак, этот вопрос был на удивление похож на мой собственный, который я только что выяснил с помощью людей на канале IRC Angular... вы, случайно, настраиваете свой контроллер, хотя ng-controller? У меня было:

    <div ng-controller="myCtrl">

... когда он должен быть удален:

    <div>

... потому что я настраивал контроллер в решении на маршрутизаторе. Это то, что я делал, и это вызывало эту проблему. Вы можете увидеть больше здесь:

fooobar.com/questions/108498/...

Ответ 2

foo_list < - - файл js для этого загружается на вашу страницу html в теге script? это может случиться так, что когда вы забыли включить factory/service/controller и фактически забыли включить его в тег script на странице index/app html (или потребовать прокладки)

Хорошо, просто увидел ваш комментарий и расширил ответ здесь, потому что его проще сделать здесь.

Ваш код, где вы объявляете контроллер, должен читать как

App.controller('FoosCtrl', 
   ['$scope', '$location', 'Foos', /* comment out foo_list here*/ 
    function($scope, $location, Foos, foo_list /* this remains */) {
  ...
}

когда маршрут будет изменен, вы укажете в "решении", который будет разрешен ui-router. Но это место, где вы объявляете свой FoosCtrl, на самом деле у вас нет провайдера для его решения.

Дайте это попробовать, у меня был подобный случай, как на прошлой неделе.

Ответ 3

Как и в случае с головами, у меня была аналогичная проблема, вызванная добавлением переменных-разрешений в зависимость от контроллера, не настроив функцию ответа в $stateProvider.state().

Добавление функции разрешения устраняет недостающую зависимость
(Я до сих пор не совсем понимаю почему - я был бы рад, если бы кто-нибудь мог поделиться своими знаниями в комментариях)