成功登录我的应用后,我想从api/js
动态加载用户可用的所有状态。动态加载的状态将始终包含抽象状态app.module
,它是唯一已知状态,并且是同一下载中所有其他状态的根。
我的第一个方法是在登录后使用oc.lazyLoad。它工作正常,但在刷新浏览器时却没有。然后我尝试在module.run中使用oc.lazyLoad加载,但它没有用。
我一直在尝试将oc.lazyLoad与来自ui-router extras的futureState一起使用,但我无法让它工作。
我需要一些关于如何配置$futureStateProvider
的帮助,如果它甚至可以做我想要的。
答案 0 :(得分:2)
Dont need lazy load.
For adding dynamic states. I just need add state provider reference to my app at config phase.
angular.module('app.module').config(function ($stateProvider, $urlRouterProvider) {
angular.module('app.module').$stateProvider = $stateProvider;
//send to login first
$urlRouterProvider.otherwise("/user/login");
});
then in login service after user login success, add some news states to states provider.
loginSuccess(){
$http.get('api/states/').then(function(states){
bindStates(states);
});
}
function bindStates(states) {
states.forEach(function bind(stateData) {
// add new states
angular.module('app.module').$stateProvider.state({
name: stateData.name,
url: stateData.url,
template: stateData.template,
params: {
'pageId': null
},
abstract: stateData.abstract
});
});
// go to default state
$state.go('main');
}