【问题标题】:"Re" resolve resources with angular ui router without reload“重新”使用角度 ui 路由器解析资源,无需重新加载
【发布时间】:2023-03-27 05:56:01
【问题描述】:

我正在使用以下代码在加载主状态时解析资源。是否可以在不重新加载页面的情况下重新解析资源?我正在避免重新加载,以免影响用户体验。

    $stateProvider
        .state('main', {
            url: '/',
            templateUrl: 'publicApp/main.html',
            controller: 'MainCtrl as mainCtrl',
            resolve: {
                userData: ["UserApi", function (UserApi) {
                    return UserApi.getUserData().$promise;
                }]
            }
        })


    .controller('MainCtrl', function (userData) {
        console.log(userData.something);
    })

由于是公共站点,用户无需登录即可访问任何页面,但用户登录时页面必须根据用户数据进行自定义。

编辑

我正在使用模式登录,因此登录后状态不会重新加载,我正在考虑在$rootScope 上抛出一个事件,然后在控制器中添加侦听器以再次加载它们。但这看起来不太好,所以我正在寻找更好的方法

我目前有两种选择:

  1. 重新加载页面 - 会影响用户体验,所以这是最后一个选项
  2. 为登录模式引发事件并在其他控制器中捕获它

有更好的想法吗?

【问题讨论】:

  • 如果用户未登录,则不应解析 userData 承诺。可能更好地从可用于注销和登录的控制器调用 getUserData()。然后当用户登录时,解决此承诺,控制器可以更新它的数据。

标签: javascript angularjs angular-ui-router


【解决方案1】:

一旦 promise 被解决,尝试使用 state reload

$state.reload();

【讨论】:

  • OP 专门要求提供 NO 重新加载选项。
  • 他说没有重新加载页面。 $state.reload() 不会重新加载页面。它重新加载状态。
猜你喜欢
  • 2017-12-18
  • 2019-05-03
  • 2020-06-26
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多