gpt4 book ai didi

angularjs - 获取 Resolve 的路由参数

转载 作者:行者123 更新时间:2023-12-03 12:45:25 24 4
gpt4 key购买 nike

我因无法理解 Angular-UI UI-Router 而丧命。我的状态定义如下:

$stateProvider
.state('member', {
url: '/member/:membersId',
templateUrl: 'templates/member.html',
resolve : {
// From examples for testing
simpleObj: function(){
return {value: 'simple!'};
},

memberDetails : function(FamilyService,$state) {

return FamilyService.getMember($state.current.params.membersId);

}
},
controller: 'MemberController'
});

由于文档说 $stateParams 不可用,我正在使用 $state.current.params。应该没事。相反,我得到了死气沉沉。我无法访问 membersId来救我的命。

为了测试我的服务并确保它不是问题,我在 membersId 中硬编码, Controller 得到 memberDetails结果以及 simpleObj结果。所以,服务和 Controller 工作得很好。

硬编码的示例:
$stateProvider
.state('member', {
url: '/member/:membersId',
templateUrl: 'templates/member.html',
resolve : {
// From examples for testing
simpleObj: function(){
return {value: 'simple!'};
},

memberDetails : function(FamilyService,$state) {

return FamilyService.getMember('52d1ebb1de46c3f103000002');

}
},
controller: 'MemberController'
});

尽管文档说您不能在解析中使用 $stateParams,但我还是尝试过。它也不起作用。
return FamilyService.getMember($stateParams.membersId);
我到底如何获得 membersId参数传递给 FamilyService 以解决问题?

我没有多少头发要拔了;所以,请有人救救我。

最佳答案

我终于想通了。这很简单,在文档中。尽管读了好几遍,但我每次都忽略了它。我需要将 $stateParams 注入(inject)解析:

$stateProvider
.state('member', {
url: '/member/:membersId',
templateUrl: 'templates/member.html',
resolve : {
simpleObj: function(){
return {value: 'simple!'};
},

memberDetails : function(FamilyService,$stateParams) {
return FamilyService.getMember($stateParams.membersId);
}
},
controller: 'MemberController'
});

我仍然不明白为什么文档说这是不可能的。

Two Important $stateParams Gotchas

The $stateParams object is only populated after the state is activated and all dependencies are resolved. This means you won't have access to it in state resolve functions. Use $state.current.params instead. $stateProvider.state('contacts.detail', { resolve: { someResolve: function($state){ //* We cannot use $stateParams here, the service is not ready // // Use $state.current.params instead *// return $state.current.params.contactId + "!" }; }, // ... })

关于angularjs - 获取 Resolve 的路由参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21079994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com