You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单个AngularJS Factory中实现两个数据集?

整合AngularJS两个Factory为单个Factory

没问题,咱们可以把这两个数据获取逻辑合并到一个Factory里,这样代码更集中整洁,也方便后续维护修改。具体实现方式如下:

实现代码

function ErrorDataService($http) {
  // 先把两个接口的URL抽成常量,方便后续修改维护
  const CAD_ERROR_API_URL = '替换为你的Cad错误数据接口地址';
  const LOG_ERROR_API_URL = '替换为你的Log错误数据接口地址';

  return {
    // 获取Cad错误数据列表,对应原来的CadError Factory逻辑
    getCadErrorList: function() {
      return $http({ url: CAD_ERROR_API_URL, method: 'GET' });
    },
    // 获取Log错误数据列表,对应原来的LogError Factory逻辑
    getLogErrorList: function() {
      return $http({ url: LOG_ERROR_API_URL, method: 'GET' });
    }
  };
}

// 将这个统一的Factory注册到inspinia模块中
angular.module('inspinia').factory('ErrorDataService', ErrorDataService);

代码说明

  • 我给这个统一的Factory起了个语义化的名字ErrorDataService,你也可以根据项目习惯改成别的,比如ErrorService之类的。
  • 把两个请求的URL单独定义成常量,这样后续要修改接口地址的时候,不用在方法里找,直接改常量就行,更高效。
  • 原来两个Factory里的getFullList方法,我改成了getCadErrorList和getLogErrorList,名字更清晰,调用的时候一眼就知道是拿哪类数据,避免混淆。

使用示例

在需要用到这些数据的控制器或者其他服务里,只需要注入这个统一的ErrorDataService,然后调用对应的方法就可以了:

function ErrorController(ErrorDataService) {
  // 获取Cad错误数据
  ErrorDataService.getCadErrorList()
    .then(function(response) {
      // 处理返回的Cad错误数据
      console.log('Cad错误数据:', response.data);
    })
    .catch(function(error) {
      // 处理请求失败的情况
      console.error('获取Cad错误数据失败:', error);
    });

  // 获取Log错误数据
  ErrorDataService.getLogErrorList()
    .then(function(response) {
      // 处理返回的Log错误数据
      console.log('Log错误数据:', response.data);
    })
    .catch(function(error) {
      // 处理请求失败的情况
      console.error('获取Log错误数据失败:', error);
    });
}

angular.module('inspinia').controller('ErrorController', ErrorController);

内容的提问来源于stack exchange,提问作者GoldenWest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:48:21