Jus*_*oel 19 angularjs angular-ui-router
我因为无法理解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'
});
Run Code Online (Sandbox Code Playgroud)
由于文档说$ stateParams不可用,我使用$ state.current.params.应该没事.相反,我得到了死气沉沉.我无法访问membersId以拯救我的生命.
为了测试我的服务并确保它不是问题,我在membersId中硬编码,控制器获得memberDetails结果以及simpleObj结果.所以,服务和控制器,工作得很好.
硬编码的示例:
$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'
});
Run Code Online (Sandbox Code Playgroud)
尽管文档说你无法使用$ stateParams,但我还是试过了.它也不起作用.
return FamilyService.getMember($stateParams.membersId);
我是如何让这个membersId参数传递到FamilyService以获得解决方案的呢?
拉出来的头发不多; 所以,请有人救我.
Jus*_*oel 24
我终于想通了.它在文档中非常简单.尽管多次阅读,我每次都忽略了它.我需要在解决方案中注入$ stateParams:
$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'
});
Run Code Online (Sandbox Code Playgroud)
我仍然不明白为什么文档说这是不可能的.
两个重要的$ stateParams陷阱
仅在激活状态并解析所有依赖项后才填充$ stateParams对象.这意味着您将无法在状态解析功能中访问它.请改用$ state.current.params.$ stateProvider.state('contacts.detail',{resolve:{someResolve:function($ state){// *我们不能在这里使用$ stateParams,服务还没准备好// //使用$ state.current.params代替* // return $ state.current.params.contactId +"!" }; },// ...})
| 归档时间: |
|
| 查看次数: |
15743 次 |
| 最近记录: |