如何在单个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
相关产品推荐
相关产品推荐

