UI-Router:在页面刷新时将状态重定向到第一个孩子

香肠

我正在使用具有多个命名视图的UI路由器来开发AngularJS应用程序。我的应用程序在index.html中具有一个ui视图,并且状态配置为:

$stateProvider
    .state('login', {
        url : '/',
        templateUrl : "partials/login.html",
        controller : "login-controller"
    })
    .state("portal", {
        url :"",
        abstract : true,
        templateUrl : "partials/header.html",
    })
    .state("portal.create-claim", {
        url : "/dashboard",
        views : {
            'create-claim' : {
                    templateUrl : "partials/create-claim.html",
                    controller : "create-claim-controller"
            }
        }
    })
    .state("portal.history", {
        url : "/history",
        views : {
            'history' : {
                templateUrl : "partials/history.html",
                controller : "history-controller"
            }
        }
    })
    /*          Other child states          */

我在标题中使用角度材质选项卡进行导航。每个选项卡的特定数据都插入header.html中提供的命名视图中,因此我将“ portal”状态设为抽象,将“ create-claim”和“ history”状态设为其子状态。

现在,当我进入选项卡历史记录时,URL为:http:// localhost:8082 / history并刷新浏览器,应用程序从portal.history变为portal.create-claim状态。我知道Angular应用程序是SPA,并且页面刷新引导整个应用程序,但是在刷新之前,如果url指向历史记录状态,则刷新后它应该进入历史记录状态。我尝试使用$ stateChangeStart事件进行调试。我发现应用程序确实进入了“ portal.history”状态,但随后立即重定向到抽象状态的“第一个子状态”,即“ portal.create-claim”。通过将“ portal.history”作为第一个孩子,将“ portal.create-claim”作为第二个孩子,然后进入“ portal.history”作为最终重定向状态,我确认了此问题。

我不知道这个问题。我正在尝试为我的应用处理页面刷新。谁能帮我吗?

nextt1

这个过程有点棘手,但是正在起作用。我只是用自己的代码检查。

问题

事情是,只要您refresh的页面view(html file)包含containsmd-tabs指令,它就会重定向到第一个选项卡(第0个索引)。现在这些标签的索引从开始0 to length-1因此,如果要将默认选项卡设置为3,则可以使用伪指令的md-selected属性,md-tabs但您要求基于URL以动态方式进行设置。

因此,首先,我们$scope在主控制器中定义一个变量,并将其分配给md-selected主控制器是指与状态关联的控制器portal,如果不存在则需要定义。

现在,如果您ui-view为每个选项卡和不同的URL使用该名称,则每次都会调用相应的控制器。

问题因此,如果您不在默认索引页面上并刷新页面,则会将您重定向到默认索引,但是ui-route's resolve将执行该URL。因此,您需要将适当的索引传递给该主控制器,并且我们可以使用该索引,service因为它适用于整个应用程序。

例子

首先我们定义一个服务

var Session = function () {
    this.setIndex = function(index) {
        this.index = index;
    };

    this.getIndex = function() {
        return this.index ? this.index : 0 ;
    };
};

Session.$inject = [];
angular.module('tempApp').service('Session', Session);

路线文件

.state("portal", {
    url :"/",
    templateUrl : "partials/header.html",
    controller: "TempController"
     resolve: {
               temp: function (Session) {
                Session.setIndex("0");
                }
              }

})
.state("portal.create-claim", {
    url : "dashboard",
    views : {
        'create-claim' : {
                templateUrl : "partials/create-claim.html",
                controller : "create-claim-controller",
                resolve: {
                           temp: function (Session) {
                                Session.setIndex("1");
                            }
                 }
        }
    }
})
.state("portal.history", {
    url : "history",
    views : {
        'history' : {
            templateUrl : "partials/history.html",
            controller : "history-controller",
            resolve: {
                           temp: function (Session) {
                                Session.setIndex("2");
                            }
                 }
        }
    }

查看文件:

<md-tabs md-selected="tabIndex">
    ....
</md-tabs>

为此的TempController

var TempController = function (Session) {
    this.tabIndex = Session.getIndex();
};
TempController.$inject = ['Session'];
angular.module('tempApp').controller('TempController', TempController);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有ui-router的AngularJS和第一个请求的附加状态

来自分类Dev

Angular UI Router仅加载第一个声明的子状态

来自分类Dev

角度ui路由器的第一个状态为`name:“”

来自分类Dev

UI路由器:导航到抽象父状态时重定向到子状态

来自分类Dev

在每个页面中使用嵌套视图时,如何使用ui-router进行页面重定向?

来自分类Dev

如何检查身份验证并使用ui-router自动重定向到登录状态?

来自分类Dev

如何检查身份验证并使用ui-router自动重定向到登录状态?

来自分类Dev

angularjs ui-router:重定向与相同状态的多个 url

来自分类Dev

AngularJS - Ui-router - 自动从根状态重定向

来自分类Dev

在提交表单重定向到另一个页面时刷新页面

来自分类Dev

Kendo UI:Tabstrip内容应重定向到同一Tabstrip上的另一个View on button单击

来自分类Dev

ng-enter不会在ui-view上触发,ui-view是页面刷新时另一个ui-view的子级

来自分类Dev

在resolve()引发错误后重定向到模板时,Angular UI Router问题

来自分类Dev

Angular ui Grid Treeview:与所有父级一起出现的问题自动作为第一个孩子出现

来自分类Dev

Angular UI-Router,访问父状态并将用户动态重定向到某个子状态

来自分类Dev

将旧搜索重定向到新搜索并保留第一个参数

来自分类Dev

使用UI-Router将数据从一个视图传递到另一个视图

来自分类Dev

离子/角度ui路由器:在向后导航时将父状态及其子状态视为一个状态

来自分类Dev

UI-Router Give在页面刷新时无法获取错误

来自分类Dev

每当在Angular UI中找到特定的父状态时,都将重定向到特定的子状态

来自分类常见问题

React Router-在验证时重定向到另一个页面

来自分类Dev

将连续的尾部输出重定向到 UI

来自分类Dev

报告301时将页面重定向到另一个页面

来自分类Dev

页面加载时未加载angular-ui-router状态

来自分类Dev

页面加载时的ui-router检查状态

来自分类Dev

Ui-Router:除一个状态外,每个状态均显示模板

来自分类Dev

刷新页面时重定向到另一个页面(F5)

来自分类Dev

如何根据写入输入字段(PHP)的第一个字母重定向到页面

来自分类Dev

选择过滤器ui-grid之后的第一个可见行

Related 相关文章

  1. 1

    带有ui-router的AngularJS和第一个请求的附加状态

  2. 2

    Angular UI Router仅加载第一个声明的子状态

  3. 3

    角度ui路由器的第一个状态为`name:“”

  4. 4

    UI路由器:导航到抽象父状态时重定向到子状态

  5. 5

    在每个页面中使用嵌套视图时,如何使用ui-router进行页面重定向?

  6. 6

    如何检查身份验证并使用ui-router自动重定向到登录状态?

  7. 7

    如何检查身份验证并使用ui-router自动重定向到登录状态?

  8. 8

    angularjs ui-router:重定向与相同状态的多个 url

  9. 9

    AngularJS - Ui-router - 自动从根状态重定向

  10. 10

    在提交表单重定向到另一个页面时刷新页面

  11. 11

    Kendo UI:Tabstrip内容应重定向到同一Tabstrip上的另一个View on button单击

  12. 12

    ng-enter不会在ui-view上触发,ui-view是页面刷新时另一个ui-view的子级

  13. 13

    在resolve()引发错误后重定向到模板时,Angular UI Router问题

  14. 14

    Angular ui Grid Treeview:与所有父级一起出现的问题自动作为第一个孩子出现

  15. 15

    Angular UI-Router,访问父状态并将用户动态重定向到某个子状态

  16. 16

    将旧搜索重定向到新搜索并保留第一个参数

  17. 17

    使用UI-Router将数据从一个视图传递到另一个视图

  18. 18

    离子/角度ui路由器:在向后导航时将父状态及其子状态视为一个状态

  19. 19

    UI-Router Give在页面刷新时无法获取错误

  20. 20

    每当在Angular UI中找到特定的父状态时,都将重定向到特定的子状态

  21. 21

    React Router-在验证时重定向到另一个页面

  22. 22

    将连续的尾部输出重定向到 UI

  23. 23

    报告301时将页面重定向到另一个页面

  24. 24

    页面加载时未加载angular-ui-router状态

  25. 25

    页面加载时的ui-router检查状态

  26. 26

    Ui-Router:除一个状态外,每个状态均显示模板

  27. 27

    刷新页面时重定向到另一个页面(F5)

  28. 28

    如何根据写入输入字段(PHP)的第一个字母重定向到页面

  29. 29

    选择过滤器ui-grid之后的第一个可见行

热门标签

归档