我正在开发一个使用带有Rails api后端的Angular UI路由器的Ionic应用程序。我有一个用户模型,其中包含许多项。
当显示用户页面时,我正在调用Rails并返回用户及其所有项目(因此我可以在用户页面上显示它们)
然后,当我想要转到特定项目的页面时,是否必须再次调用API?我的意思是,我已经掌握了这个项目。是否有一个很好的干净方式传递项目而不必为特定项目进行api调用?
我的问题有什么好的解决方案吗?
百万万分谢谢! URI答案 0 :(得分:1)
是的,有一个完美的解决方案。使项目页面成为用户页面的子项。当您在解决状态时获取用户和项目时,它也可用于所有子状态。
国:
$stateProvider.state('user', {
'url': '/user',
'controller': 'userController',
'templateUrl': 'user.html',
'resolve': {
'items': [
'$http',
function ($http) {
return $http.get('data.json');
}
]
}
});
$stateProvider.state('items', {
'parent': 'user',
'url': '/items',
'controller': 'itemsController',
'templateUrl': 'items.html'
});
控制器:
angular.module('app').controller('userController', [
'$scope',
'items',
function ($scope, items) {
$scope.items = items.data;
}
]);
angular.module('app').controller('itemsController', [
'$scope',
'items',
function ($scope, items) {
$scope.items = items.data;
}
]);
此处,状态items
中已解析的user
也可以在状态items
的控制器中注入。
这是关于Plunker的一个工作示例:http://plnkr.co/edit/s13BHHtVLt1sd6tFLfNW?p=preview
嵌套状态引用:https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views
答案 1 :(得分:0)
一旦您的用户保存了所有项目,并且您知道这些项目不会更改,您可以将数据保存在Factory中供用户使用,然后相应地查询项目而无需其他请求。 而不是可能会更改项目,您应该再次请求项目。