【发布时间】:2021-08-11 22:26:00
【问题描述】:
我有一个提供三种不同$http.get 方法的工厂。
angular.module('myApp')
.factory('getFactory', function ($http, $q) {
return {
methodOne: function () {
var deferred = $q.defer();
$http.get('path/to/data')
.then(function successCallback (data) {
deferred.resolve(data);
},function errorCallback (response) {
console.log(response);
});
return deferred.promise;
},
methodTwo: function (arg1, arg2) {
var deferred = $q.defer();
$http.get('path/to/' + arg1 + '/some/' + arg2 + 'more/data')
.then(function successCallback (data) {
deferred.resolve(data);
},function errorCallback (response) {
console.log(response);
});
return deferred.promise;
},
methodThree: function (arg1, arg2, arg3) {
var deferred = $q.defer();
$http.get('path/to/' + arg1 + '/some/' + arg2 + '/more/' + arg3 + '/data')
.then(function successCallback (data) {
deferred.resolve(data);
},function errorCallback (response) {
console.log(response);
});
return deferred.promise;
},
};
});
基本上,这些方法仅在获取数据的路径上有所不同。这些方法获得的数据在控制器中处理。我一直在阅读大量 Angular 最佳实践,并且看到了 DRY(不要重复自己)提示。
我觉得我上面的代码太重复了。有没有更好的方式来编码这种Angular 方式?
**注意:我使用 yeoman 生成器来搭建我项目的目录。
【问题讨论】:
-
AFAIK
success和error已弃用,您应该使用theninsetad。 -
@AlexanderBondar 感谢您的通知。我刚刚在AngularJS $http documentation 上阅读了它。将编辑代码。
标签: javascript angularjs angularjs-factory