我使用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"但是失败了。任何人都可以告诉我这是正确的方法吗?我阅读了文档,但我无法弄明白。谢谢
答案 0 :(得分:0)
您在网址中定义了itemId并从$ state.go传递了listId,因此您可以替换
$state.go('list.item', {listId: myListId});
带
$state.go('list.item', {itemId: myListId});