请参阅-edit-以获取最新信息。
通常,状态会
$stateProvider在配置阶段添加到中。如果要在运行时添加状态,则需要保留对
$stateProvider周围的引用。
该代码未经测试,但是应该做您想要的。它创建一个名为的服务
runtimeStates。您可以将其注入运行时代码,然后添加状态。
// config-time dependencies can be injected here at .provider() declarationmyapp.provider('runtimeStates', function runtimeStates($stateProvider) { // runtime dependencies for the service can be injected here, at the provider.$get() function. this.$get = function($q, $timeout, $state) { // for example return { addState: function(name, state) { $stateProvider.state(name, state); } } }});我已经在UI-Router Extras中实现了一些称为FutureStates的东西,这些东西为您处理了一些特殊情况,例如将url映射到尚不存在的状态。FutureStates还显示了如何延迟加载运行时状态的源代码。看一下源代码,以了解其中涉及的内容。
-edit-适用于UI-Router 1.0+
在UI-Router 1.0中,可以使用
StateRegistry.register和在运行时注册和注销状态
StateRegistry.deregister。
要访问StateRegistry,请将其作为
$stateRegistry注入,或
$uiRouter通过注入和访问
UIRouter.stateRegistry。
UI-Router 1.0还提供了开箱即用的Future States,可以处理状态定义的延迟加载,甚至可以通过URL进行同步。



