在 angularjs 模块中将 $state 服务添加到我的引用时出错
An error when I add $state service to my references in angularjs module
我在教程项目中使用 $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
...
知道为什么会出现上述错误吗?我错过了什么?
您只能在 angular 的配置阶段访问提供程序,$state
依赖项在该阶段不可用,因为 $state
是 provider
,而您是已经通过附加 Provider
前缀(如 $stateProvider
)在配置函数中访问它。
如果您的目标是重定向路由,那么您可以在 运行 块中使用 $state
依赖项。从那里使用 $state.go
app.run(function($state){
$state.go('somestate')
})
我相信您缺少您所在州的解决方案。你可以尝试这样的事情:
$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) {
我在教程项目中使用 $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
...
知道为什么会出现上述错误吗?我错过了什么?
您只能在 angular 的配置阶段访问提供程序,$state
依赖项在该阶段不可用,因为 $state
是 provider
,而您是已经通过附加 Provider
前缀(如 $stateProvider
)在配置函数中访问它。
如果您的目标是重定向路由,那么您可以在 运行 块中使用 $state
依赖项。从那里使用 $state.go
app.run(function($state){
$state.go('somestate')
})
我相信您缺少您所在州的解决方案。你可以尝试这样的事情:
$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) {