嵌套状态下的Angular ui-route缺失参数

时间:2015-11-25 11:53:35

标签: angularjs nested angular-ui-router

我使用ui路由器,我有2个状态。

父母州:

.state('list', {
        url: '/list',
        templateUrl: 'list.html',
        controller: 'ListCtrl',
        resolve: {
            getItem :  function($http, $stateParams){
                return $http.get('api/rs/getItem.json', {params: {id: $stateParams.itemId}})
                   .then (function (data) {
                       return data;
                 });
            }
        }
    })

和一个孩子状态:

.state('list.item', {
        url: '/:itemId',
})

好吧,如果我调用函数:

$state.go('list.item', {itemId: myItemId});

调用父状态的resolve函数(因为继承)。问题是,父母状态"列表"缺少" itemId"在网址中的param,所以param从未被捕获。同样,如果我将resolve函数移动到子状态" list.item",我会收到控制器捕获的一些错误,他们试图注入" getItem"但是失败了。任何人都可以告诉我这是正确的方法吗?我阅读了文档,但我无法弄明白。谢谢

1 个答案:

答案 0 :(得分:0)

您在网址中定义了itemId并从$ state.go传递了listId,因此您可以替换

 $state.go('list.item', {listId: myListId});

$state.go('list.item', {itemId: myListId});