Angular - 没有多个api调用的嵌套资源

时间:2015-02-13 22:55:22

标签: angularjs rest angular-ui-router restangular

我正在开发一个使用带有Rails api后端的Angular UI路由器的Ionic应用程序。我有一个用户模型,其中包含许多

当显示用户页面时,我正在调用Rails并返回用户及其所有项目(因此我可以在用户页面上显示它们)

然后,当我想要转到特定项目的页面时,是否必须再次调用API?我的意思是,我已经掌握了这个项目。是否有一个很好的干净方式传递项目而不必为特定项目进行api调用?

我的问题有什么好的解决方案吗?

百万万分谢谢! URI

2 个答案:

答案 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

州决议参考:https://github.com/angular-ui/ui-router/wiki#resolve

答案 1 :(得分:0)

一旦您的用户保存了所有项目,并且您知道这些项目不会更改,您可以将数据保存在Factory中供用户使用,然后相应地查询项目而无需其他请求。 而不是可能会更改项目,您应该再次请求项目。