Javascript 过程数据-在用还是控制器?

Javascript 过程数据-在用还是控制器?,javascript,angularjs,ajax,Javascript,Angularjs,Ajax,这是一个关于代码组织和最佳实践的问题 我正在使用$resource从api检索数据,我需要在将数据发送到视图之前对其进行处理 我的问题是如何处理实际数据。我的理解是,这应该在服务中完成,但我也希望在控制器中执行实际的ajax调用 正如现在一样,我注入服务并使用CdnService.sumOfVolumeRequest(response)等函数来处理数据 我做得对还是有更好的方法 服务: function updateVolumeRequest() { var params = {

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

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

我的问题是如何处理实际数据。我的理解是,这应该在服务中完成,但我也希望在控制器中执行实际的ajax调用

正如现在一样,我注入服务并使用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;
  }
控制器:

  function getData() {
    var data;

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

      });
}请参阅

重构用于进行数据操作和与工厂数据交互的逻辑。让数据服务负责XHR调用、本地存储、存储在内存中或任何其他数据操作

问题是:服务应该是模块化的吗?您是否能够在另一个控制器中注入相同的服务,并保留相同的功能,使其即插即用?

如果您希望服务能够自给自足,那么最好在服务本身中进行数据争用。这样做的目的是让服务在每次调用时以所需的格式向您提供数据。如果将某些功能移出,则需要重复该代码。这是违反干燥原则的

当然,由您决定需要在服务内部进行多少数据操作,以及需要在服务外部进行多少数据操作

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

请参阅

重构用于进行数据操作和与工厂数据交互的逻辑。让数据服务负责XHR调用、本地存储、存储在内存中或任何其他数据操作

问题是:服务应该是模块化的吗?您是否能够在另一个控制器中注入相同的服务,并保留相同的功能,使其即插即用?

如果您希望服务能够自给自足,那么最好在服务本身中进行数据争用。这样做的目的是让服务在每次调用时以所需的格式向您提供数据。如果将某些功能移出,则需要重复该代码。这是违反干燥原则的

当然,由您决定需要在服务内部进行多少数据操作,以及需要在服务外部进行多少数据操作


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

这取决于上下文


如果逻辑与视图无关,则可以将代码移动到,以便在其他控制器中重用它。但是,如果存在视图特定的逻辑,则可以在其中写入,这取决于上下文

如果逻辑是独立于视图的,则可以将代码移动到,以便在其他控制器中重用它。但是,如果存在特定于视图的逻辑,则可以写入