gpt4 book ai didi

javascript - 过程数据 - 在服务中还是在 Controller 中?

转载 作者:行者123 更新时间:2023-11-28 18:20:56 25 4
gpt4 key购买 nike

这是一个关于代码组织和最佳实践的问题。

我使用 $resource 从 api 检索数据,我需要在将其发送到 View 之前对其进行处理。

我的问题是在哪一步处理实际数据。我的理解是它应该在服务中完成,但我也想在 Controller 内进行实际的 ajax 调用。

现在,我注入(inject)服务并使用 CdnService.sumOfVolumeRequest(response) 等函数来处理数据。

我做得对还是有更好的方法?

服务:

function updateVolumeRequest() {
var params = {
metric: "size",
tStart: convertUtcToEpoch(SearchCriteria.criteria.dateFrom),
tEnd: convertUtcToEpoch(SearchCriteria.criteria.dateTo)
};
return params;
}

function volumeRequest() {
return CdnAnalyticsFactory.statsByDimension({
accountId: Token.UserInfo().Id
},
updateVolumeRequest())
.$promise;
}

Controller :

  function getData() {
var data;

CdnService.sizeRequest(SearchCriteria.criteria.dateFrom, SearchCriteria.criteria.dateTo)
.then(function onSucess(response) {
data = CdnService.sumOfVolumeRequest(response)

});

}

最佳答案

请引用John Papa's Angular Style Guide

Refactor logic for making data operations and interacting with data to a factory. Make data services responsible for XHR calls, local storage, stashing in memory, or any other data operations.

问题实际上是这样的:服务应该模块化吗?您是否应该能够在另一个 Controller 中注入(inject)相同的服务并保留相同的功能并使其即插即用?

如果您希望服务自给自足,那么最好在服务本身中处理数据。其想法是让该服务在每次调用时以所需的格式为您提供数据。如果您移出某些功能,则需要重复该代码。这违反了 DRY 原则。

当然,这取决于您需要在服务内进行多少数据操作以及需要在服务外部进行多少数据操作。

如果您在 Controller 中编写的代码是特定于您的 Controller 的逻辑,那么可以将其编写在 Controller 中。但建议不要包含每次调用服务时都需要重复的代码。

关于javascript - 过程数据 - 在服务中还是在 Controller 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39912147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com