Angular - 没有多次 api 调用的嵌套资源
Angular - nested resource without multiple api calls
我正在开发一个使用 Angular UI 路由器和 Rails api 后端的 Ionic 应用程序。我有一个 User 模型,它有很多 Items。
显示用户页面时,我调用 Rails 并返回用户及其所有项目(以便我可以在用户页面上显示它们)
那么,当我想转到特定项目的页面时,是否必须再次调用API?我的意思是,我已经拿到了物品。是否有一种无需为特定项目调用 api 即可传递项目的好方法?
我的问题有好的解决方案吗?
万分感谢!乌里
一旦您保存了所有项目的用户,并且您知道这些项目不会更改,您可以为用户将数据保存在工厂中,然后相应地查询项目而无需其他请求。
您应该再次请求这些项目,而不是这些项目可能会发生变化。
是的,有一个完美的解决方案。使项目页面成为您的用户页面的子页面。当您在状态的解析中获取用户和项目时,它也将对所有子状态可用。
州:
$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;
}
]);
这里从状态user
解析出来的items
也可以注入到状态items
的控制器中。
这是一个关于 Plunker 的工作示例:http://plnkr.co/edit/s13BHHtVLt1sd6tFLfNW?p=preview
嵌套状态引用:https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views
我正在开发一个使用 Angular UI 路由器和 Rails api 后端的 Ionic 应用程序。我有一个 User 模型,它有很多 Items。
显示用户页面时,我调用 Rails 并返回用户及其所有项目(以便我可以在用户页面上显示它们)
那么,当我想转到特定项目的页面时,是否必须再次调用API?我的意思是,我已经拿到了物品。是否有一种无需为特定项目调用 api 即可传递项目的好方法?
我的问题有好的解决方案吗?
万分感谢!乌里
一旦您保存了所有项目的用户,并且您知道这些项目不会更改,您可以为用户将数据保存在工厂中,然后相应地查询项目而无需其他请求。 您应该再次请求这些项目,而不是这些项目可能会发生变化。
是的,有一个完美的解决方案。使项目页面成为您的用户页面的子页面。当您在状态的解析中获取用户和项目时,它也将对所有子状态可用。
州:
$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;
}
]);
这里从状态user
解析出来的items
也可以注入到状态items
的控制器中。
这是一个关于 Plunker 的工作示例:http://plnkr.co/edit/s13BHHtVLt1sd6tFLfNW?p=preview
嵌套状态引用:https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views