在我的教程项目中使用$state
服务时遇到一些问题。
这是我的模块和配置定义:
(function () {
"use strict";
angular.module("gameManagement", ["ui.router", "ngAnimate", "ngResource"])
.config(["$stateProvider", "$urlRouterProvider","$state", function ($stateProvider, $urlRouterPorvider,$state) {
$urlRouterPorvider.otherwise("/game/MultiStepForm/step1");
$urlRouterProvider.otherwise("/game/Home");
$stateProvider
.state("Home", {
url: "/game/Home",
templateUrl: "/app/game/GameView.html",
controller: "GameController",
controllerAs: "vm"
});
$stateProvider
.state("Log", {
url: "/Game/Log",
templateUrl: "/app/Log/GameLogView.html",
controller: "GameLogController",
controllerAs: "vm"
onEnter: function () {
$state.go("MultiStepForm");
}
});
$stateProvider
.state("MultiStepForm.view", {
url: "/Game/MultiStepFormView",
templateUrl: "/app/MultiStepForm/MultiStepFormView.html",
controller: "MultiStepFormViewController",
controllerAs: "MultiStepViewLogic"
})
$stateProvider
.state("MultiStepForm.Edit", {
url: "/Game/MultiStepFormEdit",
templateUrl: "/app/MultiStepFormEdit/MultiStepForm.html",
controller: "MultiStepFormEditController",
controllerAs: "MultiStepEditLogic"
})
}]);
})();
我想使用这一行:
$state.go();
为此,我将 $ state 服务添加到引用中,但是当我添加到
时引用我开始收到此错误的$state
服务:
Uncaught Error: [$injector:modulerr] Failed to instantiate module sensorManagement due to:
Error: [$injector:unpr] Unknown provider: $state
http://errors.angularjs.org/1.4.2/$injector/unpr?p0=%24state
...
我知道为什么会出现上述错误?我错过了什么?
答案 0 :(得分:2)
您只能在角度配置阶段内访问提供程序,$state
依赖项在该阶段内不可用,因为$state
是provider
,并且您已经在配置函数内访问它通过添加Provider
前缀$stateProvider
。
如果您的目标是重定向路线,那么您可以在运行块中使用$state
依赖项。从那里使用$state.go
app.run(function($state){
$state.go('somestate')
})
答案 1 :(得分:1)
我相信你错过了你州的决议。你可以尝试这样的事情:
$stateProvider
.state("Log", {
url: "/Game/Log",
templateUrl: "/app/Log/GameLogView.html",
controller: "GameLogController",
controllerAs: "vm",
resolve: {$state: '$state'},
onEnter: function ($state) {
$state.go("MultiStepForm");
}
});
有关onEnter
和onExit
回调的工作原理的详情,请参阅documentation。基本上上面的问题没有正确地注入$state
服务,因此,由于回调无法访问$state
而无法转换状态。
您还需要将注入删除到配置中:
.config(["$stateProvider", "$urlRouterProvider", function ($stateProvider, $urlRouterProvider) {