Angular ui路由器转换回先前的状态

时间:2016-09-15 01:17:47

标签: angularjs angular-ui-router asp.net-mvc-routing

我遇到一个问题,在某种情况下,状态转换会发生两次。我有一个包含多个SPA的应用程序。我使用MVC路由为每个SPA提供服务,并且每个SPA都使用angular ui路由器来处理路由。

下面的图片显示了下拉菜单中每个项目是指向其他SPA

的链接的下拉列表

Drop down that contains links to different SPAs

下图显示了单击SPA链接时显示的选项卡。

Tabs per SPA

我遇到的问题特定于以下步骤。

  1. 加载SPA。这将带您进入第一个选项卡。
  2. 点击任何其他标签,这会转到特定于该标签的视图。
  3. 点击下拉菜单中指向同一SPA的链接。这会将您带回第一个标签页。
  4. 尝试点击任何其他标签。这是问题发生的地方。 ui-router将转换到我们刚刚点击的标签所代表的状态,然而,它会立即回到第一个标签。
  5. 以下是相关代码段。

    路线:

    angular.module('settings').config(routeConfig);
    
    routeConfig.$inject = ["$stateProvider", "$urlRouterProvider"];
    function routeConfig($stateProvider, $urlRouterProvider) {
    
        // default route
        $urlRouterProvider.when('', 'Tab1');
    
        $stateProvider.state('Tab1',
        {
            url: '/Tab1',
            templateUrl: '/link/To/template.html',
            controller: 'tab1controller as ctrl'
        });
    
        $stateProvider.state('Tab2',
        {
            url: '/Tab2',
            templateUrl: '/link/To/template.html',
            controller: 'tab2controller as ctrl'
        });
        $stateProvider.state('Tab3',
        {
            url: '/Tab3',
            templateUrl: '/link/To/template.html',
            controller: 'tab3controller as ctrl'
        });
    

    标签HTML:

    <li role="presentation"><a role="tab" ui-sref="Tab1" ui-sref-active="tab-title-active">Tab 1</a></li>
    <li role="presentation"><a role="tab" ui-sref="Tab2" ui-sref-active="tab-title-active">Tab 2</a></li>
    <li role="presentation"><a role="tab" ui-sref="Tab3" ui-sref-active="tab-title-active">Tab 3</a></li>
    

    我尝试收听$stateChangeStart事件,并注意到在第4步中,它首先尝试转到Tab3,然后由于某种未知原因返回Tab1。另外,正如您在第二张图片中看到的那样,突出显示了两个选项卡,这意味着ui-sref-active已将两个选项卡标记为活动。

    我尝试通过手动截取$stateChangeStart事件,然后通过$state.go$state.transitionTo进行转换而没有运气来改变状态更改。

0 个答案:

没有答案