【问题标题】:AngularJS: Creating multiple factories for every endpoint?AngularJS:为每个端点创建多个工厂?
【发布时间】:2013-06-21 10:54:01
【问题描述】:

根据一些示例,我们似乎可以注入一个工厂,该工厂将包含这样的休息服务的端点

services.factory('Recipe', ['$resource',
     function($resource) {
        return $resource('/recipes/:id', {id: '@id'});
}]);

这看起来不错,但想象一下我还有其他端点,即 /users/:id 和 /groups/:id,因为您可以想象不同端点的数量将会增加。

因此,为每个端点设置不同的工厂是一种很好的做法,因此拥有 ..

services.factory('Recipe', ['$resource',............

services.factory('Users', ['$resource',.............

services.factory('Groups', ['$resource',...............

或者有其他推荐的方式吗?

我真的看不出它有什么问题,但它会迫使我创建很多工厂来处理不同的端点。

非常感谢任何帮助或指导

谢谢

【问题讨论】:

标签: angularjs angular-resource


【解决方案1】:

这是一个偏好问题。

但没有什么能阻止您将所有资源整合到一个工厂中,例如:

services.factory('Api', ['$resource',
 function($resource) {
  return {
    Recipe: $resource('/recipes/:id', {id: '@id'}),
    Users:  $resource('/users/:id', {id: '@id'}),
    Group:  $resource('/groups/:id', {id: '@id'})
  };
}]);

function myCtrl($scope, Api){
  $scope.recipe = Api.Recipe.get({id: 1});
  $scope.users = Api.Users.query();
  ...
}

【讨论】:

  • 啊!这是有道理的,这种方法会比另一种方法更受欢迎吗?我不想打破一个责任原则,但我认为这些是相同的责任?
  • 是的,我更喜欢这种方法,因为是的,所有 $resources 都承担相同的责任(减去它们指向的实际端点)。如果您使用 $http 创建more customised models,那么单独的工厂将是更好的选择。
  • 这种方式你也只能获得 API 实例,因为工厂是单例的。我现在正在挖掘它,但我的 API 还不是很大。
  • @Stewie Cool。但是,如果您想为 Users 提供多个条目怎么办?假设您在资源定义中有一些自定义方法名称。比如,用户:$resource(... confirm: ...) 和用户:$resource(... unconfirm: ...)。干杯。
  • @Stewie 也许是这样的? nodeModule.factory('NodeFirebase', ['$resource', function($resource) { return { Node: $resource( FIREBASE_URL + 'nodes/:nodeId', { nodeId: '@nodeId' }, { add: { 方法:'POST',参数:{},isArray:假},更新:{方法:'PUT',参数:{nodeId:'@nodeId'},isArray:假}}),东西:$resource(FIREBASE_URL +' stuff/:stuffId') } } ]);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多