angular 工厂.success 和.error 函数
angular factory .success and .error functions
我是 angular 的新手,我想知道将 .success
和 .error
函数放置在控制器内还是工厂内的最佳实践是什么?示例:
我用这个吗:
(function(){
'use strict';
angular
.factory('apiService', function($http){
var apiService = {
getProfileData: getProfileData
}
return apiService;
function getProfileData(url){
return $http.jsonp(url);
}
});
})();
或者这个:
(function(){
'use strict';
angular
.factory('apiService', function($http){
var apiService = {
getProfileData: getProfileData
}
return apiService;
function getProfileData(url){
return $http.jsonp(url)
.success(function(data){
return data;
})
.error(function(err){
return err;
});
}
});
})();
我应该如何在控制器中处理它?
您绝对应该选择您发布的第二个选项并在服务中进行处理。服务应该是可重用的,因此如果错误处理没有在其中完成,则必须在使用它的每个控制器中完成。
编辑:
此规则的例外情况是错误和成功处理是否完全不同,具体取决于使用该服务的控制器,但我从未发现这种情况对我来说是这样。
我建议将它放在 service/factory 中。控制器不需要了解通信实现(您将来可能想要模拟)。
关注点分离。 :)
这两种方法都是正确的,但取决于您希望如何公开 API。
第一种方法
很简单。仅当您完全控制 $http
响应中可用的所有方面(如数据、header、状态和配置
时,才应采用这种方法
第二种方法
通过使用这种方法,您可以在 callee
方法和服务之间创建一个抽象层,它将 return 来自服务的数据,响应的其他部分将为 callee
method.Also 在这里你可以做一些数据操作操作有时你也可以在 returning 数据之前进行验证 & 你可以根据条件解决或拒绝承诺。
我建议您采用第二种方法,这样您就可以在return将数据传递给被调用方方法之前获得更多数据访问权限。
你应该选择第二个选项,但是 .success
return 一个承诺但是提供了稍微更方便的语法,其中 .then
是承诺的全部力量 API 但是稍微更冗长,所以尽管使用了 .success 我建议你更喜欢 .then
.
我是 angular 的新手,我想知道将 .success
和 .error
函数放置在控制器内还是工厂内的最佳实践是什么?示例:
我用这个吗:
(function(){
'use strict';
angular
.factory('apiService', function($http){
var apiService = {
getProfileData: getProfileData
}
return apiService;
function getProfileData(url){
return $http.jsonp(url);
}
});
})();
或者这个:
(function(){
'use strict';
angular
.factory('apiService', function($http){
var apiService = {
getProfileData: getProfileData
}
return apiService;
function getProfileData(url){
return $http.jsonp(url)
.success(function(data){
return data;
})
.error(function(err){
return err;
});
}
});
})();
我应该如何在控制器中处理它?
您绝对应该选择您发布的第二个选项并在服务中进行处理。服务应该是可重用的,因此如果错误处理没有在其中完成,则必须在使用它的每个控制器中完成。
编辑: 此规则的例外情况是错误和成功处理是否完全不同,具体取决于使用该服务的控制器,但我从未发现这种情况对我来说是这样。
我建议将它放在 service/factory 中。控制器不需要了解通信实现(您将来可能想要模拟)。
关注点分离。 :)
这两种方法都是正确的,但取决于您希望如何公开 API。
第一种方法
很简单。仅当您完全控制 $http
响应中可用的所有方面(如数据、header、状态和配置
第二种方法
通过使用这种方法,您可以在 callee
方法和服务之间创建一个抽象层,它将 return 来自服务的数据,响应的其他部分将为 callee
method.Also 在这里你可以做一些数据操作操作有时你也可以在 returning 数据之前进行验证 & 你可以根据条件解决或拒绝承诺。
我建议您采用第二种方法,这样您就可以在return将数据传递给被调用方方法之前获得更多数据访问权限。
你应该选择第二个选项,但是 .success
return 一个承诺但是提供了稍微更方便的语法,其中 .then
是承诺的全部力量 API 但是稍微更冗长,所以尽管使用了 .success 我建议你更喜欢 .then
.