当前位置: 首页 > 面试题库 >

AngularJs UI路由器-页面刷新$ state.current现在为空

单于季
2023-03-14
问题内容

我有一个正在Angular使用的应用程序ui- router,每当刷新页面时都会遇到问题。我正在使用嵌套视图(命名视图)来构建应用程序。每当我刷新页面时,ui-router都不会重新加载当前状态,只会使页面空白。

页面加载$state.current等于

Object {name: "", url: "^", views: null, abstract: true}

我正在.json通过文件$http并通过状态循环从文件中读取导航。这就是我可以显示的内容:

stateProvider.state(navElement.stateName, {
    url: navElement.regexUrl ? navElement.regexUrl : url,
    searchPage: navElement.searchPage,   //something custom i added
    parent: navElement.parent ? navElement.parent : "",
    redirectTo: navElement.redirectTo,
    views: {
        'subNav@index': {
            templateUrl: defaults.secondaryNavigation,
            controller: 'secondaryNavigationController as ctrl' //static
        },
        'pageContent@index': {
            template: navElement.templateUrl == null 
                                              ? '<div class="emptyContent"></div>' 
                                              : undefined,
            templateUrl: navElement.templateUrl == null 
                                              ? undefined 
                                              : navElement.templateUrl,
            controller: navElement.controller == null 
                                              ? undefined 
                                              : navElement.controller + ' as ctrl'
        }
    }
});

对于嵌套json对象中的每个项目,将执行此代码。如果还有其他有用的方法,请告诉我。


问题答案:

有一个问题:AngularJS-UI-router-如何使用一个答案配置动态视图,该示例显示了如何执行此操作。

怎么了?刷新时,将url尽快评估,然后注册状态。我们必须推迟。解决方案由UI- Router本机功能驱动deferIntercept(defer)

[$ urlRouterProvider.deferIntercept(defer)](http://angular-

ui.github.io/ui-router/site/#/api/ui.router.router.$urlRouterProvider)

如文档中所述:

禁用 _ (或启用)_ 延迟位置更改拦截。

如果您希望自定义同步URL的行为(例如,如果您希望推迟转换但保留当前URL),请在配置时调用此方法。然后,在运行时,$urlRouter.listen()在配置了自己的$locationChangeSuccess事件处理程序之后调用

简而言之,我们将在配置阶段停止URL处理:

app.config(function ($urlRouterProvider) {

  // Prevent $urlRouter from automatically intercepting URL changes;
  // this allows you to configure custom behavior in between
  // location changes and route synchronization:
  $urlRouterProvider.deferIntercept();

})

一旦我们从JSON配置了所有动态状态,我们就会在.run()阶段重新启用它:

.run(function ($rootScope, $urlRouter, UserService) {

  ...

    // Once the user has logged in, sync the current URL
    // to the router:
     $urlRouter.sync();

    // Configures $urlRouter's listener *after* your custom listener
    $urlRouter.listen();
});


 类似资料:
  • router配置 点击进去页面时 这样点击后页面会出现但是刷新或者跳转别的路由会报错 刷新报错: 跳转其他路由报错: 如何解决?

  • 在我的应用程序中,用户登录后我有一个主页和一些其他页面。问题是,当我在其中一个页面中刷新页面时,它会再次将我发送到主页。这是我的路线: 应用程序组件具有路由器出口 那么,我期待什么呢?首先,如果我是我的“列表”页面()并且我刷新了这个页面,它应该留在那里。在那一页。但现在它将我重定向到本地主机:4200/home。当然,当我单击一个列表项时,它应该将我发送到本地主机:4200/detail/ite

  • 我使用的是带有一个简单的路由器插座元件的Angular2 RC5和Angular2/router。我有一个可观察的,在视图中运行良好,但当你刷新页面时(F5或CTRL-F5),它就不起作用了。我在Chrome(最新版本)和IE11(可能还有其他浏览器)中都有这个功能。目前我有一个变通方法,但我不明白为什么我的更改没有自动反映在视图中。 该项目相当大,因此请尽量减少: 在MyService.ts 在

  • 环境 在写一个react + express的项目,前端使用了react-router-dom@5.3.4的BrowserRouter。 对于普通的路由,如/dashboard这样的,刷新没问题 对于携带参数的路由,如jobEdit/xxx,从页面点击跳转没问题,但刷新后页面空白。 项目结构是这样的: 情况1:生产模式 错误展示 服务端的路由配置如下: 当访问这个路由/jobEdit/xxx时,一

  • 问题内容: 我有一个文件,其中我在页面顶部显示外部页面(使用iframe),其他部分是写在文件中的html代码的输出。 HTML代码如下所示: 现在,我想以编程方式刷新页面而不刷新。 我的问题是我可以不刷新页面就刷新页面吗? 答案/提示将不胜感激。 问题答案: 该嵌在主HMTL页面(或在JSP)。因此,如果刷新页面,则肯定会再次加载iframe。 为了避免这种情况,我可以考虑以下两种选择: 使用A

  • 本文向大家介绍AngularJS实现页面定时刷新,包括了AngularJS实现页面定时刷新的使用技巧和注意事项,需要的朋友参考一下 有时我们在前端可能会有这样的需求: 1、每隔一段时间刷新一下页面中的数据 2、根据需要可以暂停和启用刷新 接下来我们就来看下AngularJS的实现方法: 首先我们了解到AngularJS中$interval可以用来处理间歇性处理一些事情,那么我们的间歇性刷新就使用i