angularjs - 我怎么能知道一个州到另一个州的路径?

时间:2016-04-06 10:32:53

标签: angularjs angular-ui-router

我在AngularJS中太新了,我有以下问题:

我怎么能知道一个州到另一个州的路径?

我想知道如何显示所有状态,特别是它通过一个状态。

例如:我有以下状态:Home,login和menuContent。如果这从menuContent开始然后继续登录并在家结束,我想看到整个路线或者至少在家庭状态之前看到的是最后一个

.state('home', {
     url: "/home",
      cache: false,
        views: {
            'menuContent': {
              templateUrl: "app/pages/dashboard.html",
              controller: 'dashboardCtrl'
            },
        },
})

.state('login', {
     url: "/login",
      cache: false,
        views: {
            'menuContent': {
             templateUrl: "app/modules/login/authentication.html",
             controller: 'AuthenticationCtrl'
            },
        },
})

.state('menuContext', {
     url: "/menuContext",
      cache: false,
        views: {
            'menuContent': {
             templateUrl: "app/modules/login/menuContext.html",
             controller: 'menuContextCtrl'
            },
        },
})

我希望这一点能被理解并为我的英语道歉

非常感谢,

问候,CMol

3 个答案:

答案 0 :(得分:1)

我可以在这里看到两个数据处理选项:创建服务或将数据粘贴到$rootScope对象。

有趣的部分是如何在服务/对象中获取/存储数据:

  • 您可以在$stateChangeStart事件上推送数据(如Ivan所述)并在需要时返回某种聚合路径
  • 您可以在州配置中使用UI路由器onEnter属性来推送状态数据,如下所示:

$stateProvider.state('state1.substate1', {
   url: "/substate1",
   templateUrl: "templates/substate1.html",
   controller: 'substate1Ctrl',
   onEnter: function(){
       $rootScope.path += '/substate1';
   }    
});

请在此处查看docs on $stateProvider(onEnter列为$ state的函数)。

答案 1 :(得分:0)

我的建议是听取$stateChangeStart事件,在处理程序中你将拥有fromState参数,这样你就可以跟踪那些先前的状态并做任何你想做的事情。您也可以提供一些服务并将这些先前的状态传递给它们,它将为您构建/存储完整路径。

查看docs

答案 2 :(得分:0)

您可以使用所有规则创建对象列表。然后,您可以注册一个循环。然后,您可以访问此对象以生成列表。

示例代码:

var rules = {
    'home': { url: "/home", cache: false, ... },
    'login': { url: "/login", cache: false, ... }
}

angular.forEach(rules, function(value, key) {
    $routeProvider.state(key, value);
});