Проблема при использовании $ state в моем модуле

0

Я пытаюсь использовать службу $ state для загрузки определенного состояния, которое я определил. Проблема в том, что я получаю всевозможные ошибки при попытке сделать это. Я читал о круговых зависимостях, а также пробовал методы, предоставляемые в других потоках stackoverflow, например, используя:

$ Injector.get($ состояние)

Но он также терпит неудачу, я получаю неизвестную ошибку $ state поставщика. Надеюсь, кто-нибудь может мне помочь...

это мой код:

'use strict';

angular.module("home", ['ui.router', 'home.controllers', 'urlLanguageStorage', 'pascalprecht.translate'])

    .config(['$stateProvider', '$translateProvider', '$state', 
             function($stateProvider, $translateProvider, $state){

        $translateProvider.useUrlLoader("home/mensajes");
        $translateProvider.useStorage("UrlLanguageStorage");
        $translateProvider.preferredLanguage("euk");
        $translateProvider.fallbackLanguage("en");

        $stateProvider
                .state("introduccion", {
                    url : "/prueba",
                    templateUrl : "resources/js/home/views/introduccion.html",
                    controller : "HomeController"
                });

        $state.go('introduccion');
    }]);

'use strict';

angular.module("home.controllers", ['home.services'])

    .controller('HomeController', ['$scope', 'HomeService', function($scope, HomeService) {

              probar();

              function probar(){
                  $scope.texto = HomeService.prueba().get();
              }
    }]);

'use strict';

angular.module('home.services',['ngResource'])

    .factory('HomeService',function($resource){

        return {

            prueba: function() {
                return $resource('http://192.168.11.6:8080/web/home/prueba');
            }
        };
    });

'use strict';

angular.module('urlLanguageStorage',['ngResource'])

    .factory('UrlLanguageStorage', ['$location',function($location){

        return {
            put : function (name, value) {},
            get : function (name) {
                return $location.search()['lang']
            }
        };
    }]);

Ошибка, которую я получаю, следующая:

Не удалось создать экземпляр модуля дома из-за: Ошибка: [$ инжектор: unpr] http://errors.angularjs.org/1.5.5/ $ инжектор /unpr? P0 =% 24state при ошибке (native) в https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js: 6: 412 по адресу https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js: 43: 84 по адресу d (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:40:344) по адресу e (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js: 41: 78) в Object.invoke(https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js: 41:163) по адресу d (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:39:321) по адресу https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:39:445 at q (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:7:355) в g (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js:39:222

Теги:
angular-ui-router

1 ответ

1
Лучший ответ

Вы $stateProvider с $stateProvider и $state.

$stateProvider - поставщик, а $state - это Служба. Они не одинаковы. Короткий ответ: вы используете $stateProvider на этапе config и используете $stateProvider в своем контроллере.

Ваша ошибка происходит из-за того, что вы вводили $state service в свой .config, что неверно:

.config(['$stateProvider', '$translateProvider', '$state'

Удалите $state и вы в порядке:

angular.module("home", ['ui.router', 'home.controllers', 'urlLanguageStorage', 'pascalprecht.translate'])
  //take out $state from config phase
  .config(['$stateProvider', '$translateProvider', '$state',
    function($stateProvider, $translateProvider, $state) {

      $translateProvider.useUrlLoader("home/mensajes");
      $translateProvider.useStorage("UrlLanguageStorage");
      $translateProvider.preferredLanguage("euk");
      $translateProvider.fallbackLanguage("en");

      $stateProvider
        .state("introduccion", {
          url: "/prueba",
          templateUrl: "resources/js/home/views/introduccion.html",
          controller: "HomeController"
        });
      //remove this line, set this in controller
      //$state.go('introduccion');
    }
  ]);

Ещё вопросы

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