我正在实施某种动态工作流程,当我达到某一点时,我必须重新加载我的状态以呈现HTML并重新启动控制器才能继续。
我发现的是我第二次拨打$state.reload()
时无效。这是理想的行为吗?我该怎么做才能强制重新加载?
if(advanceComplexAction()) {
console.log(self.$state); //This is always been printed in console
self.$state.reload();
}
else {
closeActionWizard();
}
我正在检查我的控制台,并且始终打印console.log,但我的语句self.$state.reload()
仅在我第一次调用它时才能正确运行。
编辑:
我注意到当我第一次重新加载并更改为父URL时,我的网址发生了变化。这一定是问题,因为它第三次只重新加载parentState。我不知道如何解决这个问题
第一次正常工作我的网址是:
http://localhost:1234/app/parentstate/childstate
使用重新加载后,一切正常,它会转移到父状态。
http://localhost:1234/app/parentstate
所以当我再次重新加载时,它只会重新加载父视图。我按照以下方式定义了我的路线。
.config(function($stateProvider, modalStateProvider){
$stateProvider
.state('app.parentstate',
modalStateProvider.create({
animation: true,
name: 'app.parentsate',
url: 'apps/parentstate',
controllerAs: 'parentCtrl',
controller: 'ParentCtrl',
windowClass: 'semi-modal semi-modal--XXL',
templateUrl: function() {
return 'app/ui/apps/parent/parent.html';
},
resolve: {
//Some resolve function
}]
}
})
)
.state('app.parentstate.childstate',
modalStateProvider.create({
animation: true,
name: 'app.parentstate.childstate',
url: '/childstate',
controllerAs: 'childWizardCtrl',
controller: 'ChildWizardCtrl',
windowClass: 'semi-modal semi-modal--XL',
templateUrl: function(){
return 'app/ui/apps/child/child.html';
}
})
)
谢谢
答案 0 :(得分:0)
也许你会尝试像
这样的东西$state.transitionTo('current_state', null, {'reload':true});
答案 1 :(得分:0)
我懂了!
$state.reload();
是
的别名$state.transitionTo($state.current, $stateParams, { reload: true, inherit: false, notify: true });
“reload:true”刷新父状态!所以你需要避免使用“$ state.reload”
尝试改为
window.location.reload(true)
答案 2 :(得分:0)
我解决了!问题出在我的modalState实现上。我有一个OnEnter函数,如果我的状态相同或者我关闭它,它会自动移动到我的父状态。
modalInstance.result
.then(function(result) {
$log.debug('Modal result', result);
}, function(rejection) {
$log.debug('Modal dismissed at: ' + new Date() + ' because ' + rejection);
})
.finally(function() {
modalInstance = null;
if ($state.$current.name === options.name) {
$state.go('^', $stateParams, { reload: options.reload }); //Here we are moving to parent state
}
});
更改此问题解决了我的问题。感谢您的回复