重新加载当前状态

我正在使用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

上一篇: Reloading current state

下一篇: refresh when clicked on link with actual url