重新加载当前状态
我正在使用Angular UI路由器,并希望重新加载当前状态并刷新所有数据/重新运行当前状态的控制器及其父项。
我有3个州级别: directory.organisations.details
directory.organisations包含一个包含组织列表的表。 单击表中的项目将加载directory.organisations.details,其中$ StateParams传递项目的ID。 因此,在细节状态中,我加载了这个项目的细节,编辑它们然后保存数据。 迄今为止都很好。
现在我需要重新加载这个状态并刷新所有的数据。
我努力了:
$state.transitionTo('directory.organisations');
哪些转到父状态,但不重新加载控制器,我猜是因为路径没有改变。 理想情况下,我只想保持在directory.organisations.details状态并刷新父项中的所有数据。
我也试过:
$state.reload()
我在API WIKI上为$ state.reload“看到了这一点”(控制器现在重新实现的bug,很快就会修复)“。
任何帮助,将不胜感激?
我发现这是使用ui-router刷新的最短工作方式:
$state.go($state.current, {}, {reload: true}); //second parameter is for $stateParams
更新版本:
$state.reload();
哪一个是别名:
$state.transitionTo($state.current, $stateParams, {
reload: true, inherit: false, notify: true
});
文档:https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#methods_reload
此解决方案在AngularJS V.1.2.2中可用:
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
那将是最终的解决方案。 (来自@ Hollan_Risley的帖子)
'use strict';
angular.module('app')
.config(function($provide) {
$provide.decorator('$state', function($delegate, $stateParams) {
$delegate.forceReload = function() {
return $delegate.go($delegate.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
};
return $delegate;
});
});
现在,只要您需要重新加载,只需致电:
$state.forceReload();
链接地址: http://www.djcxy.com/p/77941.html