Я пытаюсь использовать службу $ 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
Вы $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');
}
]);