在解析中使用$ state.params不起作用

时间:2015-04-10 12:48:59

标签: angularjs angular-ui-router

我目前正在处理一个小型应用程序,该应用程序显示了一个向下钻取的信息。菜单类型。与TreeView不同,我的组件只显示当前级别。

只有3个级别:main,submenu,item。深入钻取(在项目上)将导致与所选项目的详细视图对应的新状态。

我只有2个状态,第一个状态对三个级别中的任何一个都有效。第二个是详细状态:

 $stateProvider.state('menu', {
        url: '/menu/:submenu/:item',
        templateUrl: 'src/menu/views/menu.html',
        controller: 'MenuController',
        controllerAs: 'MenuController',
        resolve: {
            data: function($stateParams, MenuService){
                return MenuService.loadUri($stateParams);
            }
        }
    }).state('menu.details', {
        url: '/:selectedItem',
        templateUrl: 'src/menu/views/menu-details.html',
        controller: 'MenuDetailsController',
        controllerAs: 'MenuDetailsController',
        resolve: {
            data: function($stateParams, MenuService){
                return MenuService.loadUri($stateParams);
            }
        }
    });

此解决方案正常运行,但我有点恼火,我需要两次定义resolve方法。我需要这样做,因为$stateParams只包含那个确切状态的参数(不包括子状态),我需要所有参数来形成一个有效的URL来通过MenuService获取相应的资源。

我知道state.params可用于获取所有状态参数,但它似乎无法在resolve方法中工作:它包含之前的州。

有人知道如何解决这个问题吗?拥有一个只应触发新视图的子状态,同时使用具有所有状态参数的父状态的resolve方法?

如果您认为我完全误解了各州的运作方式,那么请继续告诉我:)

0 个答案:

没有答案